如果有 def 工作,如何禁用按钮?
How to disable button if there is a def working?
我已经尝试使用下面的代码来阻止按钮,因为如果在 def start 工作时单击它,它会破坏整个应用程序。该按钮同时调用 defs start 和 block,尽管函数 start 根本不起作用。
问题是我不能把 button_start.config(state=tk.DISABLED)
放在 def start():
中,因为它每 1000 毫秒改变一次并且按钮奇怪地跳动。
我已经搜索过了,这是我的处理思路。我不是专业程序员,这可能很愚蠢,所以我指望你的经验。
root = tk.Tk()
def stop_app():
button_start.config(state=tk.NORMAL)
def start():
#something working here...
root.after(1000, start)
def block():
button_start.config(state=tk.DISABLED)
button_start = tk.Button( root, command=start and block)
button_start.place(x=250, y=235)
button_stop = tk.Button(root, command=stop_app)
button_stop.place(x=305, y=235)
行,
button_start = tk.Button(root, command=start and block)
有错误,command=start and block
。同一个按钮不能有 2 个功能。
你可以做的是:
def block():
button_start.config(state=tk.DISABLED)
def start():
block()
或相同但行数较少的内容:
def start():
button_start.config(tk.DISABLED)
并将错误行更改为:
button_start = tk.Button(root, command=start)
我认为你可能把事情搞得太复杂了。下面的代码只是根据第一个 Button
的状态切换两个 Button
的状态,因此它们总是彼此相反。
import tkinter as tk
root = tk.Tk()
root.geometry('350x350')
def start_app():
if button_start.cget('state') == tk.NORMAL:
button_start.config(state=tk.DISABLED)
button_stop.config(state=tk.NORMAL)
def stop_app():
if button_stop.cget('state') == tk.NORMAL:
button_stop.config(state=tk.DISABLED)
button_start.config(state=tk.NORMAL)
button_start = tk.Button(root, text='Start', command=start_app, state=tk.NORMAL)
button_start.place(x=250, y=235)
button_stop = tk.Button(root, text='Stop', command=stop_app, state=tk.DISABLED)
button_stop.place(x=305, y=235)
root.mainloop()
在单击 开始 按钮之前和之后显示的屏幕截图:
我已经尝试使用下面的代码来阻止按钮,因为如果在 def start 工作时单击它,它会破坏整个应用程序。该按钮同时调用 defs start 和 block,尽管函数 start 根本不起作用。
问题是我不能把 button_start.config(state=tk.DISABLED)
放在 def start():
中,因为它每 1000 毫秒改变一次并且按钮奇怪地跳动。
我已经搜索过了,这是我的处理思路。我不是专业程序员,这可能很愚蠢,所以我指望你的经验。
root = tk.Tk()
def stop_app():
button_start.config(state=tk.NORMAL)
def start():
#something working here...
root.after(1000, start)
def block():
button_start.config(state=tk.DISABLED)
button_start = tk.Button( root, command=start and block)
button_start.place(x=250, y=235)
button_stop = tk.Button(root, command=stop_app)
button_stop.place(x=305, y=235)
行,
button_start = tk.Button(root, command=start and block)
有错误,command=start and block
。同一个按钮不能有 2 个功能。
你可以做的是:
def block():
button_start.config(state=tk.DISABLED)
def start():
block()
或相同但行数较少的内容:
def start():
button_start.config(tk.DISABLED)
并将错误行更改为:
button_start = tk.Button(root, command=start)
我认为你可能把事情搞得太复杂了。下面的代码只是根据第一个 Button
的状态切换两个 Button
的状态,因此它们总是彼此相反。
import tkinter as tk
root = tk.Tk()
root.geometry('350x350')
def start_app():
if button_start.cget('state') == tk.NORMAL:
button_start.config(state=tk.DISABLED)
button_stop.config(state=tk.NORMAL)
def stop_app():
if button_stop.cget('state') == tk.NORMAL:
button_stop.config(state=tk.DISABLED)
button_start.config(state=tk.NORMAL)
button_start = tk.Button(root, text='Start', command=start_app, state=tk.NORMAL)
button_start.place(x=250, y=235)
button_stop = tk.Button(root, text='Stop', command=stop_app, state=tk.DISABLED)
button_stop.place(x=305, y=235)
root.mainloop()
在单击 开始 按钮之前和之后显示的屏幕截图: