单击后更改按钮活动状态

2024-10-03 17:28:20 发布

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

我的pythontkintergui有两个类。主类和子类。子类正在从mainClass合成以生成GUI。有两个按钮。启动和停止按钮。启动按钮的正常状态为启用,停止按钮的状态为禁用。当我按下启动按钮时,停止按钮状态应变为启用状态,启动按钮状态应变为禁用状态,以避免多次单击。有什么建议吗

class mainClass:
    def __init__(self, master, queue,  startCommand, stopCommand, guiClient)
        self.guiClient= guiClient

        btn_start = tkinter.Button(master, text='Start', command=self.guiClient.startCommand)
        btn_start .place(x=500, y=300)

        btn_stop = tkinter.Button(master, text='Stop',state=tkinter.DISABLED, command=self.guiClient.stopCommand)
        btn_stop .place(x=500, y=400)
#---rest of the codes----


subClass:
    def __init__(self, master):
        self.master = master
        self.myGui = mainClass(master, self.queue, self.startCommand, self.stopCommand, guiClient=self)
#---rest of __init__ here

# i tried following functions. got error when pressed start button.
# error was mainClass' object has no attribute 'btn_start

    def startCommand(self):

        self.myGui.btn_stop .config(state="normal")
        self.myGui.btn_start .config(state="disabled")

    def stopCommand(self):
        self.myGui.btn_stop .config(state="disabled")
        self.myGui.btn_start .config(state="normal")

Tags: selfmasterconfig状态def按钮startstop
2条回答

禁用可以使用的按钮

btn_start['state'] = 'disabled'

或者

btn_start.config(state="disabled")

你可以通过一个函数来使用它。 示例:

btn_start = tkinter.Button(master, text='Start', command=btn_start_onclick)
...
def btn_start_onclick():
    btn_start.config(state="disabled")
    self.guiClient.startCommand()

抱歉,我刚看到你出错了。 你可以在初始化之前定义你的按钮

class mainClass:
    btn_start = None
    ...
    self.btn_start = tkinter.Button(master, text='Start', command=btn_start_onclick)

我希望它能起作用

你得到的错误是告诉你到底是什么问题。它说mainClass对象没有btn\u start属性,这是真的。该类有一个名为btn_start局部变量,但没有属性

您需要将小部件保存为类属性,然后代码将正常工作:

self.btn_start = tkinter.Button(...)
...
self.btn_stop = tkinter.Button(...)

有了这些,这将起作用:

def startCommand(self):

    self.myGui.btn_stop .config(state="normal")
    self.myGui.btn_start .config(state="disabled")

相关问题 更多 >