Python 3.x 无法将ttk主题应用于.toplevel()

Python 3.x 无法将ttk主题应用于.toplevel(),python-3.x,tkinter,ttk,tkinter-menu,Python 3.x,Tkinter,Ttk,Tkinter Menu,我试图在tkinter和Python3中创建一个slasph屏幕,它在菜单栏上同时作为一个about屏幕 到目前为止,我已经读到,我应该在第二个splash\u root上使用Toplevel()方法,但它只是向我发送了一个错误,名称“Toplevel”未定义 我是否错过了一些基本的东西,或者只是误解了Toplevel()的工作原理 import tkinter as tk import tkinter.ttk as ttk from PIL import ImageTk, Image from

我试图在tkinter和Python3中创建一个slasph屏幕,它在菜单栏上同时作为一个about屏幕

到目前为止,我已经读到,我应该在第二个
splash\u root
上使用
Toplevel()
方法,但它只是向我发送了一个错误,
名称“Toplevel”未定义

我是否错过了一些基本的东西,或者只是误解了
Toplevel()
的工作原理

import tkinter as tk
import tkinter.ttk as ttk
from PIL import ImageTk, Image
from ttkthemes import ThemedTk

def splash_screen():
   splash_root = Toplevel(root)
   splash_root.geometry("500x400")

   img_title = ImageTk.PhotoImage(Image.open("art/icons/random.png"))
   lbl_img_title = ttk.Label(splash_root,image=img_title)
   lbl_img_title.pack(side="top",pady=20)

   splash_label_by = ttk.Label(splash_root, text="name")
   splash_button = ttk.Button(splash_root, text="close", command=lambda: splash_root.destroy())

   splash_label_by.pack(pady=20, padx=20)
   splash_button.pack(ipadx=10, ipady=10)

splash_screen()

root = ThemedTk(themebg=True)
root.set_theme('black')
root.title("splash")
root.geometry("500x500")

root.mainloop()

你的问题的答案是:

#Toplevel(root) is not defined
tk.Toplevel(root) #will solve your Toplevel problem.
如果你打电话 闪屏
在声明root之前,将不定义root,并且您的代码仍然无法工作。

我做了一些调整,并将“splash\u root”和“splash\u root geometry()”移动到主root窗口中。这就解决了错误消息,但主题不是从根继承的。通过一点研究,我发现了一条评论:#Normal Tkinter.*小部件没有主题!这里:这意味着,您可能必须构建一个自己的顶级init,它调用根的主题。谢谢,我会仔细查看的