Context
我正在用Python 3.8的Tkinter开发一些学生的应用程序,让他们输入一些解决数学问题的方法,然后检查他们是否正确。
方法
每个小部件(或小部件组)被组织到一个ttk.Frame子类中,然后在MainWindow类中实例化该类,该类使用.grid()几何管理器对其进行组织。例如:
class Questions(ttk.Frame):
def __init__(self, master):
super().__init__(master)
question_style = ttk.Style(self)
question_style.configure("q.TLabel", padding=30)
question = ttk.Label(self, text=f"{QA[q_number][0]}",
justify=tk.CENTER, style="q.TLabel")
question.pack(fill=tk.BOTH)
上面的Questions类负责显示问题。我几乎对每个小部件都采用了相同的方法-导航按钮,输入字段等。我之所以采用这种方法,是因为我认为这将为我提供最大的设计灵活性,因为不仅可以更改每个小部件的外观,而且他们放置的框架(根据我的经验,在校学生在审美上可能会非常挑剔)。
问题
我无法弄清楚如何更改放置小部件的框架的属性。例如,如何更改框架的高度和宽度?我尝试了以下方法,但无济于事:
class Questions(ttk.Frame):
def __init__(self, master):
super().__init__(master)
self.height = 50
self.width = 50
question_style = ttk.Style(self)
question_style.configure("q.TLabel", padding=30)
question = ttk.Label(self, text=f"{QA[q_number][0]}",
justify=tk.CENTER, style="q.TLabel")
question.pack(fill=tk.BOTH)
我也尝试过self.configure(height=50)
,但是那也不起作用。
如何更改放置这些小部件的框架?有解决这个问题的更好方法吗?我应该放弃框架子类方法吗?
非常感谢您的帮助。谢谢。
ps.s。我不太确定该如何措辞,因此对此的任何建议也将受到赞赏。
我不太了解Tkinter,但是您是否尝试过将参数传递给超类的构造函数?
super().__init__(self, width=50, height=50)