gpt4 book ai didi

python - ttk 应用样式时打开辅助窗口

转载 作者:行者123 更新时间:2023-12-01 03:14:22 25 4
gpt4 key购买 nike

这是我的代码

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”样式应用于按钮时,它似乎神奇地出现了。

感谢您的阅读。

最佳答案

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

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

关于python - ttk 应用样式时打开辅助窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42599058/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com