簡體   English   中英

Tkinter self.grid使小部件不可見

[英]Tkinter self.grid making widgets invisible

我正在使用tkinter進行用戶名/密碼確認,但遇到了不再顯示小部件的問題。

"""
Password entry/confirmation class
"""
from tkinter import *

class Menu:
    def __init__(self,master):

        frame = Frame(master)
        frame.pack()

        title_username = Label(master, text="User Name")
        title_username.grid(row=0, column=0)

        title_password = Label(master, text="Password")
        title_password.grid(row=1, column=0)

        global username
        username = Entry(master, bd=5)
        username.grid(row=0, column=1)

        global password
        password = Entry(master, bd=5)
        password.grid(row=1, column=1)

        confirm_username = Button(master, text="Done",
                                  fg="black",command=self.get_username)
        confirm_username.grid(row=0, column=2)

        confirm_password = Button(master, text="Done",
                                  fg="black",command=self.get_password)
        confirm_password.grid(row=1, column=2)

    def show_all(self):
        self.root.update()
        self.root.deiconify()

    def get_username(self):
        global username
        username = username.get()
        print(username)

    def get_password(self):
        global password
        password = password.get()
        print(password)

root = Tk()
app = Menu(root)
root.mainloop()

由於我一直在使用grid()而不是pack()因此未顯示小部件。 (出於某種原因,全局變量需要在每個變量上聲明兩次,但這不是問題)

您正在將初始幀(可變frame )放入master ,並且正在使用pack 其余的小部件也將進入master ,並且您正在使用grid 這通常會導致程序鎖定,因為網格將嘗試排列小部件,pack將注意到它們已更改並嘗試重新排列小部件,Grid將注意到它們已更改並嘗試重新排列小部件,依此類推。

我的猜測是,代碼的原意是把title_usernametitle_password等的frame ,而不是master因為有沒有其他明顯的使用frame

暫無
暫無

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

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