import tkinter as tk
win = tk.Tk()
win.title('使用者登入')
win.geometry('300x200')
lb1 = tk.Label(win,text='使用者帳號資料',font=('微軟正黑體',16),fg='yellow',bg='black')
lb1.pack(fill='x')
lb2 = tk.Label(win,text='帳號 : ABCDEF',height=4,width=26,font=('標楷體',14),bg='lightblue')
lb2.pack(side='left',anchor='nw',fill='x')
lb3 = tk.Label(win,text='注意',height=50,width=3,font=('微軟正黑體',12),bg='pink')
lb3.pack(anchor='se',fill='y',expand=True)
lb4 = tk.Label(win,text='密碼 : 123456',height=4,width=15,font=('標楷體',14),bg='lightgreen')
lb4.pack(anchor='sw',side='left')
win.mainloop()

lb4即使我使用了 pack() 方法,該變數也無法顯示在 tkinter 視窗上。我想把lb4小部件放在下面lb2,我試過使用anchor='sw'仍然沒有顯示,所以有什么可能的方法可以正確顯示該小部件?
uj5u.com熱心網友回復:
pack 方法作業正常,請檢查:
import tkinter as tk
win = tk.Tk()
win.title('使用者登入')
win.geometry('300x200')
# lb1 = tk.Label(win,text='使用者帳號資料',font=('微軟正黑體',16),fg='yellow',bg='black')
# lb1.pack(fill='x')
#
# lb2 = tk.Label(win,text='帳號 : ABCDEF',height=4,width=26,font=('標楷體',14),bg='lightblue')
# lb2.pack(side='left',anchor='nw',fill='x')
#
# lb3 = tk.Label(win,text='注意',height=50,width=3,font=('微軟正黑體',12),bg='pink')
# lb3.pack(anchor='se',fill='y',expand=True)
lb4 = tk.Label(win,text='密碼 : 123456',height=4,width=15,font=('標楷體',14),bg='lightgreen')
lb4.pack(anchor='sw',side='left')
win.mainloop()

如果它確實顯示任何內容是因為 pack 方法將小部件添加到前一個的右側,如果它錨定到“S”(outh),即使新小部件它錨定到“w”并側向“左”。
由于lb3錨定在“se”,任何其他小部件都顯示在視窗外。
你應該使用
在這里,我洗掉了 lb3 的高度,因為它不是必需的(粘性“NS”允許我們將小部件擴展到行跨度的頂部和底部)。您可以根據需要更改列、行、列跨度、行跨度,以創建所需的布局。
uj5u.com熱心網友回復:
我嘗試在 lb3 解決問題之前運行您的代碼并使用 lb4,但它不會顯示在 lb2 下方,因為您已經side='left'在 lb2 中使用過,因此它獲得了整個左側,將其打包到 lb2 以下,將 lb2 中的 lb2 移除side='left'并放入磅 4。
它起初不顯示 lb4,因為它將它打包在 TKinter 視窗之外。
而不是使用.pack()use.grid()更好地將標簽放置在視窗中。
這有效:
import tkinter as tk
win = tk.Tk()
win.title('使用者登入')
win.geometry('300x200')
lb1 = tk.Label(win,text='使用者帳號資料',font=('微軟正黑體',16),fg='yellow',bg='black')
lb1.pack(fill='x')
lb2 = tk.Label(win,text='帳號 : ABCDEF',height=4,width=26,font=('標楷體',14),bg='lightblue')
lb2.pack(anchor='nw',fill='x')
lb4 = tk.Label(win,text='密碼 : 123456',height=4,width=15,font=('標楷體',14),bg='lightgreen')
lb4.pack(side='left',anchor='sw')
lb3 = tk.Label(win,text='注意',height=50,width=3,font=('微軟正黑體',12),bg='pink')
lb3.pack(anchor='se',fill='y',expand=True)
win.mainloop()

uj5u.com熱心網友回復:
每次使用時pack,它都會為小部件分配一整邊。因此,您呼叫的順序很pack重要。例如,一旦你把小部件放在頂部,你就不能再把東西放在右邊。
當您將pack所有子項的所有陳述句組合到同一個父視窗小部件中時,這通常更容易形象化。我還建議始終明確定義side引數,以便您的意圖非常清晰。
這是使用 pack 到達lb4下方的正確順序lb2,lb1沿著頂部和lb3右側:
lb1.pack(side="top", fill='x')
lb3.pack(side="right", fill='y')
lb2.pack(side="top", fill='x')
lb4.pack(side="top", fill='x')

轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/391845.html
上一篇:發送句號“.”時,SeleniumWebDriverforAWSDeviceFarm錯誤。擊鍵到元素
下一篇:尋找方塊圖的脈沖回應
