我在下面粘贴的python代码生成0到100的值,并将它们显示在类似文本框的shell控制台中。除此之外,我在文本框的深处添加了一个标记为“PRESS”的按钮。我想在单击“按下”按钮时开始生成值0到100的过程。我无法成功设置它。你能帮帮我吗?
#!/usr/bin/env python
import Tkinter as tk
import sys
from threading import *
class Console(tk.Frame):
def __init__(self,parent=None):
tk.Frame.__init__(self, parent)
self.parent = parent
sys.stdout = self
sys.stderr = self
self.createWidgets()
self.consoleThread = ConsoleThread()
self.after(100,self.consoleThread.start)
def write(self,string):
self.Text.insert('end', string)
self.Text.see('end')
def createWidgets(self):
self.Text = tk.Text(self.parent, wrap='word',height=38,width=115, bg='white', fg = "blue",font="Verdana 9 bold")
self.Text.grid()
self.b = tk.Button(text="PRESS")
self.b.grid()
class ConsoleThread(Thread):
def __init__(self):
Thread.__init__(self)
def run(self):
def values():
print 'TEST'
for i in range(101):
print i
x=values()
print x
if __name__ == '__main__':
root = tk.Tk()
bas=root.title('Test')
root.geometry('1000x700')
root.config(background="light blue")
main_window = Console(root)
main_window.mainloop()
try:
if root.winfo_exists():
root.destroy()
except:
pass
答案 0 :(得分:1)
要实现您正在寻找的功能,您需要附加您想要呼叫要使用的按钮的功能。这称为回调。
幸运的是,TKinter让这很容易 - 当构建按钮时,而不是写:
my_button = tk.Button(text="Click Me!")
您可以将另一个关键字参数传递给构造函数command
,这是一个在激活按钮时将被调用的函数。这看起来像这样:
def callback_message():
print("I just got called back!")
my_button = tk.Button(text="Click Me!", command=callback_message)
现在,每当您点击my_button
时,callback_message
都会运行!
在您的具体情况下,我也会values()
移出ConsoleThread.run()
;这样,在ConsoleThread
初始化时就不会被调用。