如何更改Tkinter Frame子类的属性?

问题描述 投票:0回答:1

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。我不太确定该如何措辞,因此对此的任何建议也将受到赞赏。

python tkinter tk ttk
1个回答
0
投票

我不太了解Tkinter,但是您是否尝试过将参数传递给超类的构造函数?

super().__init__(self, width=50, height=50)
© www.soinside.com 2019 - 2024. All rights reserved.