获取功能按钮用于生成值

时间:2016-01-17 14:37:14

标签: python tkinter

我在下面粘贴的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

1 个答案:

答案 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初始化时就不会被调用。