【问题标题】:unable to apply a ttk theme to .toplevel()无法将 ttk 主题应用于 .toplevel()
【发布时间】:2021-05-31 11:18:00
【问题描述】:

我正在尝试在 tkinter 和 python 3 的菜单栏上重新创建一个斜线屏幕,它兼作关于屏幕。

到目前为止,我已经读过我应该在第二个 splash_root 上使用 Toplevel() 方法,但它只是向我发送错误 name 'Toplevel' is not defined

我是否遗漏了一些基本内容,或者只是误解了 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()

【问题讨论】:

    标签: python-3.x tkinter ttk tkinter-menu


    【解决方案1】:

    你的问题的答案:

    #Toplevel(root) is not defined
    tk.Toplevel(root) #will solve your Toplevel problem.
    

    如果你打电话 飞溅屏幕() 在声明 root 之前,不会定义 root 并且您的代码仍然无法工作。

    【讨论】:

    • 我做了一些调整,并将“splash_root”和“splash_root geometry()”移到主根窗口中。这已经解决了错误消息,但主题不是从根继承的
    • 经过一些研究,我发现了一条评论:# Normal Tkinter.* 小部件没有主题!这里:ttkthemes Example 这意味着,您可能必须构建一个自己的顶级 init 来调用根的主题。
    • 谢谢,我会看看的
    猜你喜欢
    • 1970-01-01
    • 2021-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-28
    • 2016-02-20
    • 2018-04-25
    • 1970-01-01
    相关资源
    最近更新 更多