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 Main循环,因此即使您修复了代码,您的窗口也会冻结。下面是一个工作示例:
import random
import time
from threading import Thread
from tkinter import *
class stack_overflow():
def __init__(self, master):
self.master = master
self.x = 'trial'
self.lab = Label(self.master, text=self.x)
self.lab.pack(side="left")
self.start_radome()
def start_radome(self):
radome_thread = Thread(target=self.randomno)
radome_thread.start()
def randomno(self):
while True:
self.x = random.randint(1, 100)
self.lab.config(text='%s' % self.x)
time.sleep(1)
if __name__ == '__main__':
root = Tk()
app = stack_overflow(master=root)
root.mainloop()
所以你开始你的tkinter,这是你的主线程。在另一个线程中启动无限循环。因此,您的tkinter窗口不会冻结。
下面是在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()
函数中分配新的随机值即可。
你不应该叫时间。sleep()在tkinter
应用程序中。改用通用小部件方法after()
。注意在上面的代码中,randomno()
如何调用root。after()
以安排稍后再次调用它自己。
这就是在tkinter
程序中定期执行某些操作的方法,这种方法将在调用sleep()
时保持GUI运行不“挂起”。
下面的代码返回一个错误,但我不确定原因。需要更改哪些内容以允许编译?
问题内容: 我已经为Employee类的父类是抽象的并且父类中的clone()方法是抽象的编写了此克隆方法。我想用此代码复制Employee对象的原始数据类型,而不是复制每个原始数据单独键入,但是此代码在我调用clone()方法的行中有问题。(此代码在Employee类中) 错误是:来自对象类型的方法clone()不可见。 但是我的Employee类在类层次结构中,可以访问Object类中受保护的
我有一个关于书库的问题...我想写一个有3个堆栈的程序,我想在每个堆栈上添加这些操作(我应该使用数组): 1.创建堆栈2。按3号。流行音乐4号。显示每个堆栈的顶部 我写的程序,但我遇到了这些错误: 错误4错误LNK2019:未解析的外部符号“public:int\u thiscall stack::IsFull2(void)”(?IsFull2@stack@@QAEHXZ)在函数“public:v
我是GraphQL的新手,我正试图做一个突变来从我的数据库中删除一篇文章,但我不知道如何删除。我使用Node.js,猫鼬和GraphQL。 这是我的模式的变异。 这是我在调用API删除文章时使用的查询。 我做错了什么? 我收到一个错误的400请求。消息:“无法查询类型为“变异”的字段“删除”
尝试在每周一8:15运行时间表,我尝试了以下表达式: 我想这意味着: 分钟数:15 小时:8 月日:每隔 月份:每 星期几:仅周一 年份:每 文件:http://docs.aws.amazon.com/AmazonCloudWatch/latest/events/ScheduledEvents.html
提示:Extra content at the end of the document这样的错误