我是一名有用的助手,可以为您进行文本翻译。
我目前正在学习Tkinter GUI编程。我在多线程概念中卡住了。尽管这个主题在这里已经讨论了几次,但我仍然无法理解并将其应用到我的小样例程序中。
下面是我的代码:
我目前正在学习Tkinter GUI编程。我在多线程概念中卡住了。尽管这个主题在这里已经讨论了几次,但我仍然无法理解并将其应用到我的小样例程序中。
下面是我的代码:
from PIL import Image, ImageTk
from Tkinter import Tk, Label, BOTH
from ttk import Frame, Style
from Tkinter import *
import time
class Widgets(Frame):
def __init__(self, parent):
Frame.__init__(self, parent)
self.grid()
self.parent = parent
self.initUI(parent)
def initUI(self, parent):
self.parent.title("Count Numbers")
for r in range(10):
self.parent.rowconfigure(r, weight=1)
for c in range(10):
self.parent.columnconfigure(c, weight=1)
self.button1 = Button(parent, text = "count")
self.button1.grid(row = 1, column = 1, rowspan = 1, columnspan = 2, sticky = W+E+N+S )
self.button1["command"] = self.countNum
self.button2 = Button(parent, text = "say Hello")
self.button2.grid(row = 1, column = 7, rowspan = 1, columnspan = 2, sticky = W+E+N+S)
self.button2["command"] = PrintHello(self).helloPrint
def countNum(self):
for i in range(10):
print i
time.sleep(2)
class PrintHello(Frame):
def __init__(self, parent):
Frame.__init__(self, parent)
self.grid()
self.parent = parent
def helloPrint(self):
print "Hello"
def main():
root = Tk()
root.geometry("300x200")
app = Widgets(root)
root.mainloop()
if __name__ == '__main__':
main()
输出是一个带有2个按钮的GUI界面-第一个按钮打印数字,第二个按钮打印“Hello”。但是在单击第一个按钮时,GUI会冻结,同时数字正在被打印。在寻找解决方法时,我发现“多线程”可能有所帮助。但是经过多次尝试,我无法将多线程应用于我的示例程序中。