【发布时间】:2020-10-02 23:47:26
【问题描述】:
上下文
我正在为一些学生在 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),但也没有用。
如何更改放置这些小部件的框架? 有没有更好的方法来解决这个问题?我应该放弃 Frame 子类方法吗?
非常感谢任何帮助。谢谢。
附言我不太确定如何措辞这个问题,所以对此的任何建议也很感激。
【问题讨论】:
-
试过
self.configure(height=50),但也没有用。:这是一个有效的声明,但默认情况下Frame小部件缩小到里面放置的小部件的大小,这里是Label,这取决于你如何布局你没有向我们展示的Frame。阅读The Tkinter Frame Widget -
您是在问如何更改任何属性,还是专门在问如何更改宽度和高度?宽度和高度是特殊的,而不是您通常会做的事情。框架旨在完全适合他们的孩子和/或完全适合他们父母给他们的空间。