在 tkinter 类中创建一个切换按钮

Posted

技术标签:

【中文标题】在 tkinter 类中创建一个切换按钮【英文标题】:Create a toggle button within a tkinter class 【发布时间】:2021-06-02 21:12:03 【问题描述】:

我正在尝试创建一个具有切换按钮的 Tkinter 类。我的代码如下所示。

''' '''

from tkinter import *
class test:
    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()

这给了我一个错误,说 btn_rf1 未在 clicked_rf1() 中定义。

如果我运行这段代码而不将它定义为一个类,它就可以工作。我认为这是因为 'btn_rf1' 是类属性而不是类中的变量并导致此问题,但我不知道如何解决它。感谢任何帮助

【问题讨论】:

请发布错误回溯。 【参考方案1】:

试试这个:

from tkinter import *


class Test:
    def __init__(self):
        self.window = Tk()
        self.window.title("Start/Stop Button")
        self.window.geometry('200x100')
        self.btn_rf1 = Button(self.window, text="Start", command=self.clicked_rf1)
        self.btn_rf1.grid(column=1, row=1)
        self.lbl_rf1 = Label(self.window, text="  OFF ", bg="red")
        self.lbl_rf1.grid(column=2, row=1)

        self.window.mainloop()

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


app = Test()

您没有正确使用类。阅读 this 教程,了解更多关于 Python 类及其工作原理的信息。

【讨论】:

以上是关于在 tkinter 类中创建一个切换按钮的主要内容,如果未能解决你的问题,请参考以下文章

在 Tkinter 中创建向导

如何在 Python Tkinter 中创建一个按钮以将整数变量增加 1 并显示该变量?

在 PySimpleGui 中创建自定义按钮

需要在 Flash CS3 AS3 中创建暂停/恢复切换按钮

Python连载60-Tkinter布局按钮以及属性详解

如果在函数中创建,为啥 Tkinter 图像不显示?