gpt4 book ai didi

python - 让 tkinter 在文本框中显示输出

转载 作者:太空宇宙 更新时间:2023-11-03 16:40:26 27 4
gpt4 key购买 nike

我正在尝试创建一个小型 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()

感谢您提前提供的任何帮助,如果您需要有关任何问题的更多说明,请告诉我。谢谢。

最佳答案

每次单击按钮时,您都会重新创建label1。另外,您没有打包您正在创建的那个,因为它位于 isPrime() 方法的本地范围内。

如果您想更改标签的文本,您应该将其作为参数传递给 isPrime() 并使用 .config(text="text here")label["text"] = "此处的文字"

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)

关于python - 让 tkinter 在文本框中显示输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36842445/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com