【发布时间】:2021-06-03 08:45:43
【问题描述】:
我有一个带有 2 个按钮的 tkinter 应用程序。 Run application 和 Store data。如果最终用户没有先点击Run application,我不想让最终用户有机会点击Store data。
因此,首先单击按钮 Run application 后,需要取消禁用按钮 Store data。
在下面的代码中,我创建了一个应该在上面执行的 checker 函数,但是 Store data 按钮始终处于禁用状态。
这是我的代码:
import os
from tkinter import *
owner = ['Spain', 'United Kingdom', 'Malaysia']
path_spain = r"c:\data\FF\Desktop\PythonFolder\spain_software.py"
path_uk = r"c:\data\FF\Desktop\PythonFolder\uk_software.py"
path_malaysia = r"c:\data\FF\Desktop\PythonFolder\malaysia_software.py"
window = Tk()
window.title("Running Python Script") # Create window
window.geometry('550x300') # geo of the window
data = []
#Confirmation function
def store():
data.append(dd_owner.get())
print(data)
checker()
def run():
if dd_owner.get() == "Spain":
print("spain")
# os.system('python path_spain')
elif dd_owner.get() == "United Kingdom":
os.system('python path_uk')
elif dd_owner.get() == "Malaysia":
os.system('python path_malaysia')
def update_button(_):
run_button.config(text="Run application {}".format(dd_owner.get()))
# These are the option menus
dd_owner = StringVar(window)
w = OptionMenu(window, dd_owner, *owner, command=update_button)
w.grid(row=0, column=1)
#These are the buttons
store_button =Button(window, text="Store data!",command=store)
store_button.grid(column=0, row=31)
run_button = Button(window, text="Run application {}".format(dd_owner.get()), bg="blue", fg="white",command=run)
run_button.grid(column=0, row=2)
# These are the titles
l1 = Label(window, text='Select Owner', width=15)
l1.grid(row=0, column=0)
def checker():
if data:
store_button.configure(state='normal')
else:
store_button.configure(state='disabled')
checker()
mainloop()
【问题讨论】:
-
其实你应该启用
run()里面的按钮,如果需要的条件匹配并且checker()不是必须的。 -
@Atlas435 不,它没有。
-
@acw1668 你能用代码告诉我吗?
-
@TangerCity 将
store_button.configure(state='normal')放在您的run函数中。 -
如果没有选择所有者,即使点击运行按钮,商店按钮是否应该保持禁用?