【问题标题】:ttk Opening Secondary Window when Applying Stylettk 应用样式时打开辅助窗口
【发布时间】:2023-04-01 05:55:02
【问题描述】:

这是我的代码

from Tkinter import *
import ttk, tkMessageBox
import os

font = ("Avenir", 24)

b = ttk.Style()
b.configure('TButton', font=font)

class LoginScreen(Tk):
    def __init__(self, *args, **kwargs):
        Tk.__init__(self, *args, **kwargs)

        container = Frame(self)
        container.pack(side=TOP, fill=BOTH, expand=True)

        self.frames = {}
        for F in (Login, Register):
            frame = F(container, self)
            self.frames[F] = frame

            frame.grid(row=0, column=0, sticky='nsew')

        self.show_frame(Login)

    def show_frame(self, cont):
        frame = self.frames[cont]
        frame.tkraise()

class Login(Frame):
    def __init__(self, parent, controller):
        Frame.__init__(self, parent)
        label = Label(self, text="screen 1")
        button = Button(self, text="move", font=font, command=lambda: controller.show_frame(Register))

        button.pack()
        label.pack()

class Register(Frame):
    def __init__(self, parent, controller):
        Frame.__init__(self, parent)
        label = Label(self, text="screen 2")
        label.pack()

if __name__ == '__main__':
    app = LoginScreen()
    app.title("Login")
    app.mainloop()

当我运行它时,我得到这个屏幕: Working Screen without ttk

但是一旦我改变:

button = Button(self, text="move", font=font, command=lambda: controller.show_frame(Register))

button = ttk.Button(self, text="move", style='TButton', command=lambda: controller.show_frame(Register))

A Secondary Window is opened and the font doesn't change.

我希望我忽略了一些简单的东西,但是这种设置 ttk 小部件样式的方法是我在网上看到的唯一方法。

我不想要窗口,正如我之前所说,当我将“b”样式应用于按钮时,它似乎神奇地出现了。

感谢阅读。

【问题讨论】:

    标签: python tkinter ttk


    【解决方案1】:

    第二个窗口是由您的第 7 行引起的。当您调用 ttk.Style 时,它需要一个根窗口才能使用,如果尚未创建一个,它会创建一个。要解决此问题,您需要在创建根窗口(调用 Tk())后将第 7 行和第 8 行移动到一个点。

    if __name__ == '__main__':
        app = LoginScreen()
        app.title("Login")
        b = ttk.Style()
        b.configure('TButton', font=font)
        app.mainloop()
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-22
    • 2016-11-13
    • 1970-01-01
    相关资源
    最近更新 更多