python-3.x - 在 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' 是类属性而不是类中的变量并导致此问题,但我不知道如何解决它。感谢任何帮助
解决方案
尝试这个:
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 类及其工作方式的更多信息。
推荐阅读
- java - 来自 tabula-java 的错误,CalledProcessError
- javascript - 在窗口滚动时检测到达容器底部
- python - 使用自定义属性使 SymPy 简化功能
- mysql - 是否有在 sql 表中的两条记录之间添加新记录的语法?
- javascript - 如何在子键 Firebase 中获取数据
- ios - 从 collectionView 单元格中获取和更新 UITableView 单元格单击
- jquery - 使用 mysql 驱动程序在 golang 中使用参数执行查询时出错
- haskell - Haskell 隐式参数和多态递归
- python-3.x - 无法对 index.html 页面使用有效的 Django 模型(在管理页面中输入了模块数据,但在 index.html 页面中不可见)
- javascript - 从对象中检索某些键