这个错误是什么?我如何修复它?在
def check_number():
if (len(txtNum1)!=11):
error_number = "the number that you entered is wrong"
msg = tk.Message(frame, text = error_number , fg="red")
msg.pack()
title = Label(frame, text="enter your number", fg="gray")
title.pack()
txtNum1 = Text (frame, height=1, width=30)
txtNum1.pack(side=tk.TOP)
button = tk.Button(frame,
text="chek",
fg="green",
command=check_number)
button.pack(side=tk.BOTTOM)
root.mainloop()
我只是测试了__len__
方法,但效果不好。在
代码中的一个问题是使用
if
语句。您询问的是文本对象是否具有长度,而不是检查文本对象的内容。这可以通过使用get()
来纠正。如果在文本框中使用get()
,则需要指定索引。.get(1.0, "end")
。这样做的问题是,你得到的长度将比输入的长度长1个字符,因此解决这个问题的简单方法是在这里使用一个输入字段。在对于
Entry()
字段,您可以使用不带索引的get()
,它将获得该字段中文本的副本。请记住,如果你在文本之前或之后有一个空格,它也会计算在内。如果您想弥补这一点,您可以在get()
之后添加strip()
来删除两边的空白。在为了稍微清理一下,你会想改变你创建信息的方式。用你的代码,如果你按下按钮多次,那么程序将添加一个新的消息与每一个按钮按下。这将导致消息堆叠。为了避免这种情况,让我们先创建消息标签,然后使用
.config()
方法用我们的函数更新它。在下一步的清理工作是删除对不需要它们的小部件的变量赋值。在这种情况下,不需要将第一个标签和按钮指定给变量。在
最后一点清理是确保你与你的小部件一致。现在(基于您的示例代码),您正在导入tkinter两次。一次使用
from tkinter import *
,一次使用import tkinter as tk
。您不需要同时使用这两种方法,应该只使用第二种导入方法。使用import tkinter as tk
将有助于防止意外重写内置方法。在请看我下面的代码:
相关问题 更多 >
编程相关推荐