0

我正在努力做到这一点,所以当您按“HELLO”五次时,文本变为红色,只是当我将任何内容添加到可行性时,它没有添加任何内容。这就是代码。

    from tkinter import *
    class application(Frame):
    global t
  t=1  
   def info(self):
      print ("test")
    global t
    t=t+5

  def createWidgets(self):
    global t
    t=t
    self.exet= Button(self)
    self.exet["text"] = "QUIT"
    self.exet["fg"] = "red"
    self.exet["command"] = self.quit

    self.exet.pack({"side": "left"})

    self.hi = Button(self)
    self.hi["text"] = "HELLO",
    if t == 5:
        self.hi["fg"] = "red"

    self.hi["command"] = self.info
    self.hi.pack({"side": "left"})

  def __init__(self, master=None):
    Frame.__init__(self, master)
    self.pack()
    self.createWidgets()

感谢任何人的帮助!

4

1 回答 1

1

这里有几个问题:首先,您使用全局变量,然后将其包含在函数范围内。取而代之的是,您应该使用实例变量(self.t,甚至self.counter为了更好的可读性)。其次,您正在检查 中的计数器的值createWidgets,该方法仅调用一次__init__。您应该在按钮上的事件处理函数中增加并检查其值。

class application(Frame):

    def info(self):
        self.counter += 1
        print(self.counter)
        if self.counter == 5:
            self.hi["fg"] = "red"

    def createWidgets(self):
        self.counter = 0
        self.exet= Button(self)
        self.exet["text"] = "QUIT"
        self.exet["fg"] = "red"
        self.exet["command"] = self.quit
        self.exet.pack({"side": "left"})

        self.hi = Button(self)
        self.hi["text"] = "HELLO",
        self.hi["command"] = self.info
        self.hi.pack({"side": "left"})

    def __init__(self, master=None):
        Frame.__init__(self, master)
        self.pack()
        self.createWidgets()
于 2013-04-25T17:24:36.577 回答