首页 > 解决方案 > 在 tkinter 类中创建一个切换按钮

问题描述

我正在尝试创建一个具有切换按钮的 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' 是类属性而不是类中的变量并导致此问题,但我不知道如何解决它。感谢任何帮助

标签: python-3.xtkinterpython-class

解决方案


尝试这个:

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()

您没有正确使用课程。阅读教程以了解有关 python 类及其工作方式的更多信息。


推荐阅读