Python3 Tkinter禁用按钮出现故障代码

2024-04-30 01:13:52 发布

您现在位置:Python中文网/ 问答频道 /正文

目前,我试图在满足某个条件时禁用UI中的某些按钮。唯一的问题是我只能在按钮创建后更改它的状态。在

我创建了一个Disabler类来处理这个问题,但是让它运行起来很困难。禁用程序,如果我让它工作,将有任务禁用所有与我的定时器类有关的按钮,这样用户就知道它们是不可单击的(或者它们什么也不做)。在

下面是我的代码的简化版本,只显示按钮。在

from tkinter import *

root = Tk()

class StopWatch(Frame):
    def __init__(self, parent=None, **kw):
        Frame.__init__(self, parent, kw)
        StopWatch.on = 1
        TimeAdjustLabel = LabelFrame(root, text='Frame',)
        TimeAdjustLabel.grid(column=0, row=1, padx=10, pady=10)
        StopWatch.b1 = Button(TimeAdjustLabel, text='Reset', width=10, command=self.Start)
        StopWatch.b1.grid(row=0, column=0)

    def Start(self, event=None):
        if StopWatch.on == 0:
            StopWatch.on = 1
        else: 
            StopWatch.on = 0
        self.enable()

    def enable(self):
        if StopWatch.on == 0:
            StopWatch.b1.configure(state=DISABLED)
        else: 
            StopWatch.b1.configure(state=NORMAL)


def main():
    sw = StopWatch(root)
    root.mainloop()

if __name__ == '__main__':
    main()

Tags: selfnoneifinitmainondefroot
1条回答
网友
1楼 · 发布于 2024-04-30 01:13:52

你差点好了。你你一看到就明白它。什么我想告诉你的是:

from tkinter import *
root = Tk()

class StopWatch(Frame):
    def __init__(self, parent=None, **kw):
        Frame.__init__(self, parent, kw)
        self.on = 1
        TimeAdjustLabel = LabelFrame(root, text='Frame',)
        TimeAdjustLabel.grid(column=0, row=1, padx=10, pady=10)
        self.b1 = Button(TimeAdjustLabel, text='Reset', width=10, command=lambda:self.Start(self.on))
        self.b1.grid(row=0, column=0)

    def Start(self, onoff):
        if onoff == 0:
            onoff = 1
        else: 
            onoff = 0
        self.enable(onoff)


    def enable(self,enableonoff):
        if enableonoff == 0:
            self.b1.configure(state='disabled')
        else: 
            self.b1.configure(state='normal')

def main():
    app = StopWatch(root)
    root.mainloop()

if __name__ == '__main__':
    main()

相关问题 更多 >