2016-05-25 6 views
0

私はtkinterでマルチウィンドウGUIを作っていますが、GUIの背景色を変更したいと思います。私は複数の解決策を試してみましたが、うまくいきません。たとえば、root.configure(background = 'red')です。これは動作しません。次のいずれかhttp://www.java2s.com/Code/Python/GUI-Tk/SetFramebackgroundcolor.htmPython:フレームroot.configure(background = 'red')の色を変更できません。

import tkinter as tk 
from tkinter import * 
from tkinter import ttk 

LARGE_FONT = ("Verdana", 12) 

def loadmsg(msg): 
    popupload.fileName = filedialog.askopenfilename(filetypes=(("textfiler", ".txt"), ("Alla filer", ".*"))) 


class Dod(tk.Tk): 
    def __init__(self, *args, **kwargs): 
     tk.Tk.__init__(self, *args, **kwargs) 
     tk.Tk.wm_title(self, "GUi") 
     container = tk.Frame(self) 
     container.pack(side="top", fill="both", expand=True) 
     container.grid_rowconfigure(0, weight=1) 
     container.grid_columnconfigure(0, weight=1) 

     self.frames = {} 
     for F in (StartPage, PageOne): 
      frame = F(container, self) 
      self.frames[F] = frame 
      frame.grid(row=0, column=0, sticky="nsew") 

     self.show_frame(StartPage) 

    def show_frame(self, cont): 
     frame = self.frames[cont] 
     frame.tkraise() 



class StartPage(tk.Frame): 
    def __init__(self, parent, controller): 
     ttk.Frame.__init__(self, parent) 
     label = ttk.Label(self, text="GUI", font=LARGE_FONT) 
     label.pack(pady=10, padx=10) 
     button = ttk.Button(self, text="Visit Page One", 
          command=lambda: controller.show_frame(PageOne)) 


     button2 = ttk.Button(self, text="Ok", 
          command=lambda: controller.label2) 

     button.pack() 
     button2.pack() 


class PageOne(tk.Frame): 
    def __init__(self, parent, controller): 
     tk.Frame.__init__(self, parent) 
     label = ttk.Label(self, text="Page One", font=LARGE_FONT) 
     label.pack(pady=10, padx=10) 
     button1 = ttk.Button(self, text="Back to Home", 
          command=lambda: controller.show_frame(StartPage)) 

     button1.pack() 

root = Dod() 
root.geometry("800x400") 
root.mainloop() 
+0

投稿したコードに背景色を変更しようとしているコードはありません。どうしたの?あなたが試したことを私たちに教えてください。あなたの質問で言及したソリューションの両方が動作します。 –

+0

それは私の問題です。コードを実装する方法がわかりません... –

答えて

1

これは非常に簡単です...

あなたはクラスドッドののinit機能にcontainer.config()の引数を追加するだけです(tk.Tk)を引数container.grid_columnconfigure(0、weight = 1)の後に追加します。次に、self.frames [F] = F in(start1、start、P1、P2)のループ内のフレームの後にframe.config(bg = "black")を追加します[これはループ内のすべてのフレームに黒色を与えます] コードは次のとおりです。

import tkinter as tk 
from tkinter import * 
from tkinter import ttk 

LARGE_FONT = ("Verdana", 12) 

def loadmsg(msg): 
    popupload.fileName = filedialog.askopenfilename(filetypes=(("textfiler", ".txt"), ("Alla filer", ".*"))) 


class Dod(tk.Tk): 
    def __init__(self, *args, **kwargs): 
     tk.Tk.__init__(self, *args, **kwargs) 
     tk.Tk.wm_title(self, "GUi") 
     container = tk.Frame(self) 
     container.pack(side="top", fill="both", expand=True) 
     container.grid_rowconfigure(0, weight=1) 
     container.grid_columnconfigure(0, weight=1) 
     F1.config() 

     self.frames = {} 
     for F in (StartPage, PageOne): 
      frame = F(container, self) 
      self.frames[F] = frame 
      frame.config(bg="black") 
      frame.grid(row=0, column=0, sticky="nsew") 

     self.show_frame(StartPage) 

    def show_frame(self, cont): 
     frame = self.frames[cont] 
     frame.tkraise() 



class StartPage(tk.Frame): 
    def __init__(self, parent, controller): 
     ttk.Frame.__init__(self, parent) 
     label = ttk.Label(self, text="GUI", font=LARGE_FONT) 
     label.pack(pady=10, padx=10) 
     button = ttk.Button(self, text="Visit Page One", 
         command=lambda: controller.show_frame(PageOne)) 


     button2 = ttk.Button(self, text="Ok", 
         command=lambda: controller.label2) 

     button.pack() 
     button2.pack() 


class PageOne(tk.Frame): 
    def __init__(self, parent, controller): 
     tk.Frame.__init__(self, parent) 
     label = ttk.Label(self, text="Page One", font=LARGE_FONT) 
     label.pack(pady=10, padx=10) 
     button1 = ttk.Button(self, text="Back to Home", 
         command=lambda: controller.show_frame(StartPage)) 

     button1.pack() 

root = Dod() 
root.geometry("800x400") 
root.mainloop() 
+0

StartPage .__ init__関数の中では、クラスはttk.Frameではなくtk.Frameの子孫ですが、ttk .__ init__で親initを呼び出します。これは有効ですか? – RufusVS

+0

私はPython 2.7を使用していますが、ttk.Framesにbgが設定項目の1つとして含まれていないことがわかりました。私はそれらをtkに変更しました。上記のF1.config()の行と、定義されていないbutton2定義のcontroller.label2への参照が当たるまで、フレームと作業は機能しました。 – RufusVS

関連する問題