gpt4 book ai didi

python - 如何将 Tkinter 按钮用于两种状态?

转载 作者:行者123 更新时间:2023-11-28 20:14:24 27 4
gpt4 key购买 nike

我有以下代码,单击 Tkinter 按钮时会导致颜色/文本发生变化。第二次单击该按钮时,我想恢复为原始颜色/文本。

from Tkinter import *

window = Tk()
window.title("Start/Stop Button")
window.geometry('200x100')

def clicked_rf1():
btn_rf1.configure(text="Stop")
lbl_rf1.configure(text=" ON ", bg="green")

btn_rf1 = Button(window, text="Start", command=clicked_rf1)
btn_rf1.grid(column=1, row=1)
lbl_rf1 = Label(window, text=" OFF ", bg="red")
lbl_rf1.grid(column=2, row=1)

window.mainloop()

我想要一些行为更像切换按钮的东西,但我想要按钮的外观。

非常感谢您的帮助。

最佳答案

您将需要一个 if block 来选择要做什么。您可以制作另一个标志变量来跟踪状态,或者只使用当前的标签或按钮文本:

from Tkinter import *

window = Tk()
window.title("Start/Stop Button")
window.geometry('200x100')

def clicked_rf1():
if btn_rf1['text'] == "Start":
btn_rf1.configure(text="Stop")
lbl_rf1.configure(text=" ON ", bg="green")
else:
btn_rf1.configure(text="Start")
lbl_rf1.configure(text=" OFF ", bg="red")

btn_rf1 = Button(window, text="Start", command=clicked_rf1)
btn_rf1.grid(column=1, row=1)
lbl_rf1 = Label(window, text=" OFF ", bg="red")
lbl_rf1.grid(column=2, row=1)

window.mainloop()

这将是创建自定义 Button 子类的理想场所,因此您可以在程序中包含许多这样的子类:

from Tkinter import *

window = Tk()
window.title("Start/Stop Button")
window.geometry('200x100')

class Christina(Frame):
def __init__(self, master=None, **kwargs):
Frame.__init__(self, master, **kwargs)

self.btn = Button(self, text="Start", command=self.clicked)
self.btn.grid(column=0, row=0)
self.lbl = Label(self, text=" OFF ", bg="red")
self.lbl.grid(column=1, row=0)

def clicked(self):
if self.btn['text'] == "Start":
self.btn.configure(text="Stop")
self.lbl.configure(text=" ON ", bg="green")
else:
self.btn.configure(text="Start")
self.lbl.configure(text=" OFF ", bg="red")

btn1 = Christina(window)
btn1.grid()
btn2 = Christina(window)
btn2.grid()
btn3 = Christina(window)
btn3.grid()

window.mainloop()

关于python - 如何将 Tkinter 按钮用于两种状态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49909113/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com