我尝试创建一个小型GUI,当用户在文本框中输入数字时,它会显示(作为标签)是否为素数。
我目前的代码"工作" (因为没有显示错误)但标签没有变化。
素数代码在python shell中有效。
我的代码如下:
from tkinter import *
root = Tk()
label1 = Label( root, text="Enter Number")
E1 = Entry(root, bd =5)
def isPrime():
entry1 = E1.get()
entry1 = int(entry1)
for d in range(2,entry1):
if entry1 % d == 0:
label1 = Label(root, text="Not prime")
root.update_idletasks()
break
else:
label1 = Label(root, text="Is prime")
submit = Button(root, text ="Submit", command = isPrime)
root.update_idletasks()
label1.pack()
E1.pack()
submit.pack(side =BOTTOM)
root.mainloop()
感谢您提前获得任何帮助,如果您对任何问题有任何更多说明,请与我们联系。谢谢。
答案 0 :(得分:1)
每次点击按钮时,您都会重新创建label1
。此外,您没有打包正在创建的那个,因为那个是isPrime()
方法的本地范围。
如果您想更改标签的文字,则应将其作为参数传递给isPrime()
并使用.config(text="text here")
或label["text"] = "text here"
。
def isPrime(lbl):
entry1 = int(E1.get())
for d in range(2,entry1):
if entry1 % d == 0:
lbl.config(text = "Not prime")
break
else:
lbl["text"] = "Prime"
submit = Button(root, text ="Submit", command = lambda:isPrime(label1))
或者您可以将label1
设为全局并更改其文字。
def isPrime():
global label1
entry1 = E1.get()
entry1 = int(entry1)
for d in range(2,entry1):
if entry1 % d == 0:
label1.config(text = "Not prime")
break
else:
label1["text"] = "Prime"
submit = Button(root, text ="Submit", command = isPrime)