gpt4 book ai didi

python - 这个 tkinter 程序有什么问题?

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

import random
import time
from tkinter import *

root = Tk()

x = ""

lab = Label(root,text = x)
lab.pack()

root.mainloop()

def randomno():
while (1):
y = random.randint(1, 100)
y = StringVar()
x = y.get()
lab["text"] = x
#root.update_idletasks()
time.sleep(2)

randomno()

错误:

Traceback (most recent call last):   File
"C:/Users/Acer/PycharmProjects/unseen/tp.py", line 26, in <module>
randomno() File "C:/Users/Acer/PycharmProjects/unseen/tp.py", line 20, in randomno
y = StringVar() File "C:\Users\Acer\AppData\Local\Programs\Python\Python37\lib\tkinter\__init__.py",
line 480, in __init__
Variable.__init__(self, master, value, name) File "C:\Users\Acer\AppData\Local\Programs\Python\Python37\lib\tkinter\__init__.py",
line 317, in __init__
self._root = master._root() AttributeError: 'NoneType' object has no attribute '_root'

最佳答案

以下是在 tkinter 中执行您想要的操作的常用方法:

import random
import time
import tkinter as tk

DELAY = 2000 # milliseconds (thousandth of a second)

def randomno():
x = random.randint(1, 100)
lab["text"] = x
#time.sleep(2) # Don't call this in a tkinter program!
root.after(DELAY, randomno) # Call this function again after DELAY ms.


root = tk.Tk()

lab = tk.Label(root, text="")
lab.pack()

randomno() # Starts periodic calling of itself.
root.mainloop()

您不需要使用 StringVar,只需在 randomno() 函数中分配新的随机值即可。

您不应在 tkinter 应用程序中调用 time.sleep()。使用通用widget方法after()反而。请注意上面的代码中 randomno() 如何调用 root.after() 来安排稍后再次调用自身。

这就是如何在 tkinter 程序中定期执行某些操作,这种方法将使 GUI 在调用 sleep() 时保持运行而不是“挂起”。

关于python - 这个 tkinter 程序有什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53774424/

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