Tkinter按钮只能单击一次

时间:2019-11-21 16:13:39

标签: python button tkinter

我有一个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.")

0 个答案:

没有答案