Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 样式在类中不适用于任何对象?_Python_Class_Tkinter_Styles - Fatal编程技术网

Python 样式在类中不适用于任何对象?

Python 样式在类中不适用于任何对象?,python,class,tkinter,styles,Python,Class,Tkinter,Styles,为什么我的样式不改变这些对象的背景?我很恼火,把所有的事情都分配给了他们。还有为什么它有两个窗口?我发现这与样式不同有关,而与对象选项中的样式不同。。。我觉得我的类也一样,我应该def\u init\u(self)it吗?班级 import tkinter as tk import tkinter.ttk as ttk style = ttk.Style() style.configure("color1.TFrame", foreground = "black", background =

为什么我的样式不改变这些对象的背景?我很恼火,把所有的事情都分配给了他们。还有为什么它有两个窗口?我发现这与样式不同有关,而与对象选项中的样式不同。。。我觉得我的类也一样,我应该
def\u init\u(self)
it吗?班级

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()

为什么看起来什么都没有出现,而您的样式也不起作用,是因为您实际上并没有绘制所有的小部件

您从未告诉以下小部件在您的窗口上实际绘制:

  • n
  • f1
  • f2
另外,当您调用
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()

可以说,这样做的更好方法如下:

import tkinter as tk
import tkinter.ttk as ttk

root = tk.Tk()

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

class main:
    def __init__(self, root):
        n = ttk.Notebook(root, style = "color1.TFrame")
        f1 = ttk.Frame(n, style = "color1.TFrame")
        f2 = ttk.Frame(n, style = "color1.TFrame")

        n.pack()
        f1.pack()
        f2.pack()

        frame1 = ttk.Frame(f1, style = "color1.TFrame")
        frame2 = ttk.Frame(f1, style = "color1.TFrame")

        frame1.grid(row = 1, column = 1, padx = 200, pady = 150)
        frame2.grid(row = 2, column = 1,padx = 200, pady = 150)

main(root)
root.mainloop()

尽管这是主观的,并且实现了相同的目标。

为什么看起来什么都没有出现,而您的样式不起作用,是因为您并没有真正绘制所有的小部件

您从未告诉以下小部件在您的窗口上实际绘制:

  • n
  • f1
  • f2
另外,当您调用
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()

可以说,这样做的更好方法如下:

import tkinter as tk
import tkinter.ttk as ttk

root = tk.Tk()

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

class main:
    def __init__(self, root):
        n = ttk.Notebook(root, style = "color1.TFrame")
        f1 = ttk.Frame(n, style = "color1.TFrame")
        f2 = ttk.Frame(n, style = "color1.TFrame")

        n.pack()
        f1.pack()
        f2.pack()

        frame1 = ttk.Frame(f1, style = "color1.TFrame")
        frame2 = ttk.Frame(f1, style = "color1.TFrame")

        frame1.grid(row = 1, column = 1, padx = 200, pady = 150)
        frame2.grid(row = 2, column = 1,padx = 200, pady = 150)

main(root)
root.mainloop()

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

我可以在没有课堂的情况下让它工作……没有任何效果,因此风格没有理由发挥作用。我可以在没有课堂的情况下让它工作……没有任何效果,所以这种风格没有理由起作用谢谢你的回复我知道:)我现在也得到了,而不是从某个地方复制。谢谢你的回复我知道:)我现在也得到了,而不是从某个地方复制。