我有一个Python Tkinter程序,该程序接受一些用户输入(主要是复选框),然后当用户单击“开始”按钮时,它将运行一些代码将某些文件(基于单击的按钮)复制到桌面上的文件夹中
该程序运行正常,但是在单击“开始”并运行后,无法再次单击“开始”(例如,是否要单击另一个复选按钮以复制其他文件)。我不确定是什么问题,但希望有人能帮助我。我不会粘贴所有代码,因为由于man if elif语句和checkbutton声明,大约有1500行。如果需要,我可以将其发布到pastebin或类似的东西。我将发布我认为是相关的部分,但是如果需要其他片段,请随时告诉我。
预先感谢任何提示,以使其按照我的预期效果更有效地工作。
validLocation = False
validUser = None
validPassword = None
destination = r'C:\Users\Jordan.Hawkes\Desktop\Copied_Files'
def start():
if validLocation == False or validUser == False or validPassword == False:
get_user()
if validUser == True and validPassword == True:
get_location()
if validLocation == True:
if not os.path.exists(destination):
os.makedirs(destination)
get_programs()
errorLabel.configure(text="Starting File Copy", fg='green')
else:
if not validLocation:
errorLabel.configure(text="Missing Parameter:\n You MUST select a location.")
elif not validType:
errorLabel.configure(text="Missing Parameter:\n You MUST select an Installation Type.")
get_user(),get_location(),get_version()仅在复制文件之前帮助验证来自用户的输入。我认为此处无关紧要,因此我将其省略。
buttonFrame = Frame(contentFrame, highlightbackground="black", highlightthickness=1)
buttonFrame.pack(fill=X)
startButton = tk.Button(buttonFrame, text='START', width=25, command=start, bg='green')
startButton.pack(side=LEFT, fill=BOTH, expand=1)
quitButton = tk.Button(buttonFrame, text='QUIT', width=25, command=quit, bg='red')
quitButton.pack(side=LEFT, fill=BOTH, expand=1)
感谢您的帮助。以下代码能够解决该问题:
def start():
global validLocation, validUser, validPassword
if validLocation == False or validUser == False or validPassword == False:
get_user()
if validUser == True and validPassword == True:
get_location()
if validLocation == True:
if not os.path.exists(destination):
os.makedirs(destination)
get_programs()
errorLabel.configure(text="Starting File Copy", fg='green')
validLocation = False;
validUser = None;
validPassword = None;
else:
if not validLocation:
errorLabel.configure(text="Missing Parameter:\n You MUST select a location.")
elif not validType:
errorLabel.configure(text="Missing Parameter:\n You MUST select an Installation Type.")