我是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部分:
在这方面,我们将不胜感激。提前谢谢!
答案 0 :(得分:2)
您似乎正在使用app
的父级创建所有小部件。他们的父母应该是self
:
if operation == "addition":
Label(app, text="Addition:").pack()
self.num1 = Entry(self)
...