首页 > 解决方案 > python:我的 Tkinter 代码有时不会更改字体系列和大小

问题描述

我有这个通过 tkinter 制作 GUI 的 python 代码。

当我按下表格 1 上的按钮时,我试图在顶部激活一个新表格(表格 2)。

我是基于 tkinter 类的继承开发的。

我的代码通常运行良好,但我发现了一个问题。

如果我通过 Form 1 上的按钮事件运行 Form 2,则 Form 2 上的字体不会更改。

根本不会发生错误。

在此处输入图像描述

但是,如果我从下面的 main 中直接运行它,字体将成功更改。

if __name__ == '__main__':    
    form2 = Form2()
    form2.mainloop()  # execute GUI

这是我的代码:

from tkinter.ttk import *
import tkinter as tk
from tkinter import messagebox
from tkinter import *
import tkinter.font as tkFont

class Form2(tk.Tk):
    def __init__(self):
        super().__init__()  # Inheritance from tkinter class

        self.title("Form2")
        self.geometry("350x600")
        self.resizable(0, 0)

        self.label = tk.Label(self, text='form2',
                          font=tkFont.Font(family="Roboto", size=18))
        self.label.pack()


class Form1(tk.Tk):
    def __init__(self):
        super().__init__()  # Inheritance from tkinter class

        self.title("Form1")
        self.geometry("350x600")
        self.resizable(0, 0)

        # Get Language Data
        self.label = tk.Label(self, text='form1',
                          font=tkFont.Font(family="Roboto", size=18))
        self.label.pack()

        # preferences button design
        self.button: object = tk.Button(self, overrelief="solid", width=10, height=2,
                                    repeatdelay=1000, repeatinterval=100,
                                    text="Preferences",
                                    font=tkFont.Font(family="Roboto", size=9),
                                    command=lambda: self.button_clicked())
        self.button.pack()

    @staticmethod
    def button_clicked():
        form2 = Form2()
        form2.mainloop()


if __name__ == '__main__':
    form1 = Form1()
    form1.mainloop()

请给我一些建议。

标签: pythontkinter

解决方案


推荐阅读