ttk样式在函数内部不起作用

ttk Styling doesn't work inside functions

我有一些 ttk 按钮,但它们在一个函数中,每当我尝试设置它的样式时它都不起作用,但是当我创建一个新文件并使用相同的行但没有将它放在函数中时它工作得很好.这是代码片段。

def function():
    if Something == Another thing: 
        r = Tk() # Opens new window
        r.title('Lorem ipsum')
        s = ttk.Style()
        s.configure('TButton', font=('Helvetica', 18))
        Button = ttk.Button(r, text = "lorem ipsum dolor sit amet",command = lorem ipsum,style="TButton")
        Label = ttk.Label(r, text = "Get total Stores Values and quantities")
        Label.place(relx = 0.2, rely= 0.4,anchor=CENTER)
        Button.place(relx = 0.5, rely= 0.4 ,width= 500 ,height = 50  ,anchor=CENTER)

谢谢,希望已经足够清楚了。

由于有多个Tk()个实例,需要指定该样式属于哪个实例:

from tkinter import *
from tkinter import ttk

def function():
    if True:
        r = Tk() # Opens new window
        r.geometry('600x400')
        r.title('Lorem ipsum')
        s = ttk.Style(r) # should specify which Tk instance
        s.configure('TButton', font=('Helvetica', 18))
        Button = ttk.Button(r, text="lorem ipsum dolor sit amet", style="TButton")
        Label = ttk.Label(r, text="Get total Stores Values and quantities")
        Label.place(relx=0.5, rely=0.4, anchor=CENTER)
        Button.place(relx=0.5, rely=0.6, width=500, height=50, anchor=CENTER)

root = Tk()
function()
root.mainloop()

请注意,您使用 TButton 作为影响所有 ttk.Button() 的样式名称(实际上您可以删除 style="TButton")。如果您只想将样式应用于特定的小部件,最好使用其他名称,例如 Custom.TButton

避免使用多个 Tk() 实例。如果可以,请使用 Toplevel()