Tkinter:使用单个按钮在系列中多次更改标签中的文本

时间:2016-04-10 01:04:52

标签: python tkinter

我在这里有一个简单的例子:

from tkinter import *

root = Tk()

display = Label(root,text="Starting")
display.pack()

def change(): #Do on first press of button
    global display
    display.config(text="I just changed")

def change1(): #Do on second press of button
    global display
    display.config(text="I changed again")

def change2(): #Do on third press of button
    global display
    display.config(text="I changed once more")

button = Button(root,text="Press me",command=change)
button.pack()

它显然改变了标签'#34; Starting"到了#34;我刚改变了#34;在第一次按下按钮时,如何在连续按下同一个按钮时再执行其他两个功能(change1和change2)?

2 个答案:

答案 0 :(得分:2)

您可以设置一个计数器来确定要将标签文本更改为什么,然后当计数器达到最大值时将其重置为处理进一步按下按钮。您实际上不需要global来更改标签。

from tkinter import *

root = Tk()

display = Label(root,text="Starting")
display.pack()

def _change():

    if button.counter == 0:
        display.config(text="I just changed")
    elif button.counter == 1:
        display.config(text="I changed again")
    else:
        display.config(text="I changed once more")
    if button.counter != 2:
        button.counter += 1
    else:
        button.counter = 0

button = Button(root,text="Press me",command=_change)
button.counter = 0
button.pack()
root.mainloop()

答案 1 :(得分:-2)

要做到这一点,你必须定义一个变量来跟踪按下按钮的时间。 您还必须创建更新函数以增加变量并测试变量的状态。

例如:

from tkinter import *

root = Tk()

display = Label(root,text="Starting")
displayState = 1
display.pack()

def change():
    global displayState, display

    if displayState == 1:
        display.config(text="I just changed")

    elif displayState == 2:
        display.config(text="I changed again")

    elif displayState == 3:
        display.config(text="I changed once more")

    displayState += 1

button = Button(root,text="Press me",command=change)
button.pack()

root.mainloop()