我遇到了問題,我無法創建子小部件的子小部件。我嘗試使用一個類來創建一個帶有小部件的視窗,或者使用一個函式來查看我是否不了解類的作業原理,但失敗是一樣的。
我已將問題歸結為以下代碼:
import tkinter as tk
root = tk.Tk()
root.geometry('900x400')
frame1=tk.LabelFrame(root, text="frame1",width=800, height=400, bg='blue', bd=5).pack()
labelframe1=tk.LabelFrame(frame1, text="labelframe1",width=300, height=300, bg='green', bd=15).pack()
labelframe2=tk.LabelFrame(frame1, text="labelframe2",width=300, height=300, bg='yellow', bd=15).pack()
button1 = tk.Button(labelframe1,text="text").pack()
這段代碼沒有錯誤,但結果是一樣的。只創建根的孩子,而不是根孩子的孩子。
如何創建“孫子”小部件?
uj5u.com熱心網友回復:
在 python 中,x().y()回傳y(). 因此,當你這樣做時,tk.LabelFrame(...).pack()它會回傳None. 因此,當您這樣做時,tk.Button(labelframe1, ...)它與 相同tk.Button(None, ...,這會導致按鈕成為根視窗的子視窗。
最重要的是,將小部件創建與小部件布局分開是最佳實踐。我個人也發現將布局代碼組合在一起會使代碼更容易理解。我認為明確定義小部件被打包到哪一側也是一個好習慣。
frame1=tk.LabelFrame(root, text="frame1",width=800, height=400, bg='blue', bd=5))
labelframe1=tk.LabelFrame(frame1, text="labelframe1",width=300, height=300, bg='green', bd=15)
labelframe2=tk.LabelFrame(frame1, text="labelframe2",width=300, height=300, bg='yellow', bd=15)
button1 = tk.Button(labelframe1,text="text")
frame1.pack(side="top")
labelframe1.pack(side="top")
labelframe2.pack(side="top")
button1.pack(side="top").
button1 = tk.Button(labelframe1,text="text").pack()
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/350131.html
下一篇:打開新視窗后如何銷毀視窗?
