样式不适用于任何对象?

时间:2017-10-25 03:06:37

标签: python class tkinter styles

为什么我的风格不会改变任何这些对象的背景?我生气了,把它们分配给了一切。为什么它会制作两个窗户?我发现它与风格的不同之处在于对象选项中的风格...我觉得它也适用于我的课程,我想def _init_(self)它?班级?

import tkinter as tk
import tkinter.ttk as ttk


style = ttk.Style()
style.configure("color1.TFrame", foreground = "black", background = "red")    
class main:

    parent = tk.Tk()
    n = ttk.Notebook(parent,style = "color1.TFrame")
    f1 = ttk.Frame(n,style = "color1.TFrame")   # first page tab
    f2 = ttk.Frame(n,style = "color1.TFrame")   # second page 2nd tab
    window = f1
    frame1 = ttk.Frame(window,style = "color1.TFrame")
    frame1.grid(row = 1, column = 1, padx = 200, pady = 150)
    frame2 = ttk.Frame(window)
    frame2.grid(row = 2, column = 1,padx = 200, pady = 150)

main()

1 个答案:

答案 0 :(得分:1)

似乎没有出现任何内容并且您的样式不起作用的原因是因为您实际上并未绘制所有小部件。

你永远不会告诉下面的小工具真正在你的窗口上画画:

  • address="/employeeservice"
  • n
  • f1

此外,当您调用f2尚未创建根窗口时,会加载第二个窗口。这比我解释它here要好得多。

通过将程序更改为以下内容,您可以看到样式确实有效:

ttk.Style()

可以说更好的方法就是如下:

import tkinter as tk
import tkinter.ttk as ttk

class main:

    parent = tk.Tk()

    style = ttk.Style()
    style.configure("color1.TFrame", foreground = "black", background = "red")    

    n = ttk.Notebook(parent,style = "color1.TFrame")
    n.pack()
    f1 = ttk.Frame(n,style = "color1.TFrame")   # first page tab
    f2 = ttk.Frame(n,style = "color1.TFrame")   # second page 2nd tab
    window = f1
    f1.pack()
    f2.pack()
    frame1 = ttk.Frame(window,style = "color1.TFrame")
    frame1.grid(row = 1, column = 1, padx = 200, pady = 150)
    frame2 = ttk.Frame(window)
    frame2.grid(row = 2, column = 1,padx = 200, pady = 150)

main()

虽然这是主观的并且实现了同样的目标。