簡體   English   中英

如何從 function 給 main 賦值

[英]How to give value to main from function

在我的程序中有一個帶有 windows 選項的主要部分,我需要 go 到 Greetings def。

if __name__ == "__main__":
    web = Tk()

    web.configure(background = "black")

    web.title("#######")

    web.geometry("600x400")

    web.iconbitmap('icon.ico')

    web.resizable(False, False)

    web.protocol("WM_DELETE_WINDOW", close)

    Greetings(log)

    def Greetings(log):
        
        log.withdraw()
        def clear_form():
            greetings_entry_name.delete(0, END)
            greetings_entry_password.delete(0, END)
        greetings_frame = Frame(web, background = "black", pady = 10)
        greetings_frame.pack()

但是我有另一個 def 和另一個 window(登錄),我需要“日志”來授予隱藏登錄 window 的權限。

def login():
        web.withdraw()
        log = Tk()
        ...
        ...
        registration_back_button = Button(login_frame, text = "Go back", bg = "#293133", fg = "white", command = Greetings(log))
        registration_back_button.pack(pady = 15)
        return log

所以如果我想編譯我有可預測的錯誤

名稱“日志”未定義

我怎樣才能給 Greetings 日志或者不這樣做。

我不確定這是否是您要查找的內容,但您可以使用嵌套函數,因此您的Toplevel window 已定義。 您不能將return與按鈕一起使用。 您的代碼不可重現,因此我創建了一個登錄名 window 的示例。我添加了grab_set()以避免可以忽略登錄名 window。 我還使用了destroy()而不是withdraw() 密碼:你不得通過

import tkinter as tk

window = tk.Tk()


def login():
    log = tk.Toplevel(window)
    log.grab_set()

    def check_pw():
        password = entry1.get()

        if password == 'You shall not pass':
            label1 = tk.Label(window, text='Login successful!')
            label1.pack()
            button1.destroy()
            log.destroy()
        else:
            label2 = tk.Label(log, text='Wrong password')
            label2.pack()

    entry1 = tk.Entry(log)
    entry1.pack()

    button2 = tk.Button(log, command=check_pw, text='Login')
    button2.pack()


button1 = tk.Button(window, command=login, text='Press for login')
button1.pack()

window.mainloop()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM