2017-10-25 4 views
0

私のスタイルはこれらのオブジェクトの背景を変更しないのはなぜですか?私は迷惑になり、すべてにそれらを割り当てました。また、なぜ2つのウィンドウを作るのですか?私はそれがオブジェクトのオプションのスタイルとは異なるスタイルと関係があることを知っています...私はそれが私のクラスにもあるように感じます、私は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() 
+0

私はそれがクラスなしで動作することができます... – Martelmungo

+0

何も機能しないので、スタイルは機能する必要はありません –

答えて

1

あなたのウィジェットを実際に描画していないため、何も表示されず、スタイルがうまくいかない理由は、

あなたが実際にあなたの窓の上に描画するには、以下のウィジェットを言うことはありません:

  • n
  • f1
  • f2

また、第二の窓負荷はあなたがttk.Style()を呼んでいるときまだルートウィンドウを作成していません。これは私がそれを説明できるよりもはるかに良く説明されているhere

あなたはスタイルが実際に動作しないことがわかります以下に、あなたのプログラムを変更することにより:

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

これは主観的であり、同じ目標を達成しますが。

+0

私はそれを知っている応答ありがとう:)私はまた、どこかから。 – Martelmungo

関連する問題