[英]Frame object in tkinter not grouping widgets in python
我是python新手,剛開始使用'tkinter'模塊。 我試圖使用從“框架”對象繼承的自定義類之一將不同的小部件組合在一起,成為一個全新的小部件,並希望垂直堆疊4個這樣的新小部件。
每個新窗口小部件均包含1個“標簽”,3個“條目”窗口小部件和2個“按鈕”窗口小部件(在4個新窗口小部件中,按鈕窗口小部件分別具有不同的用途)。
為了垂直排列它們,我使用了不帶參數的'pack()'方法。 問題在於,我不是以垂直的方式將所有6個舊窗口小部件以“分組”方式放置在新窗口小部件中,而是得到了一種“傾斜”的顯示方式,其中所有按鈕彼此“混合”了(所有裝箱價值為“左”的小部件首先顯示,而裝箱價值為“右”的小部件隨后顯示)。
這是我的類“ OperationPanel”的一部分(實際的類太大而無法顯示,但存在諸如減法之類的其他操作,並且還存在與按鈕鏈接的所有功能):
class OperationPanel(Frame):
def __init__(self, app, operation):
Frame.__init__(self, app)
if operation == "addition":
Label(app, text="Addition:").pack()
self.num1 = Entry(app)
self.num1.pack(side = LEFT)
self.num2 = Entry(app)
self.num2.pack(side = LEFT)
self.disp = Entry(app)
self.disp.pack(side = LEFT)
Button(app, text="Reset", command=self.reset_add).pack(side = RIGHT)
Button(app, text="Add!", command=self.calc_add).pack(side = RIGHT)
elif operation == "subtraction":
Label(app, text="Subtraction:").pack()
self.num1 = Entry(app)
self.num1.pack(side = LEFT)
self.num2 = Entry(app)
self.num2.pack(side = LEFT)
self.disp = Entry(app)
self.disp.pack(side = LEFT)
Button(app, text="Reset", command=self.reset_sub).pack(side = RIGHT)
Button(app, text="Subtract!", command=self.calc_sub).pack(side = RIGHT)
elif operation == "multiplication":
Label(app, text="Multiplication:").pack()
self.num1 = Entry(app)
self.num1.pack(side = LEFT)
self.num2 = Entry(app)
self.num2.pack(side = LEFT)
self.disp = Entry(app)
self.disp.pack(side = LEFT)
Button(app, text="Reset", command=self.reset_mul).pack(side = RIGHT)
Button(app, text="Multiply!", command=self.calc_mul).pack(side = RIGHT)
elif operation == "division":
Label(app, text="Division:").pack()
self.num1 = Entry(app)
self.num1.pack(side = LEFT)
self.num2 = Entry(app)
self.num2.pack(side = LEFT)
self.disp = Entry(app)
self.disp.pack(side = LEFT)
Button(app, text="Reset", command=self.reset_div).pack(side = RIGHT)
Button(app, text="Divide!", command=self.calc_div).pack(side = RIGHT)
...
這是我對OperationPanel對象的調用:
OperationPanel(app, "addition").pack()
OperationPanel(app, "subtraction").pack()
OperationPanel(app, "multiplication").pack()
OperationPanel(app, "division").pack()
這是GUI現在的外觀:
第1部分:
第2部分:
在這方面的任何幫助將不勝感激。 提前致謝!
看起來您正在使用app
的父級創建所有小部件。 他們的父母應該是self
:
if operation == "addition":
Label(app, text="Addition:").pack()
self.num1 = Entry(self)
...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.