2017-12-15 4 views
0

以下のコードは、Pythonでtkinterを使用して作成したものです。次のフレームへのリンクを提供するフレームをレンダリングし、次のフレームで前のフレームへのリンクを提供します。フレームの幅と高さを設定する方法がわかりません。助けてください。 containerあなたの猫の大きさを変更するにはフレームの幅と高さを設定する

import tkinter as tk 
LARGE_FONT = ("Verdana", 12) 
class ImgComp(tk.Tk): 

    def __init__(self, *args, **kwargs): 

     tk.Tk.__init__(self, *args, **kwargs) 
     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, PageTwo): 

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

def qf(param): 
    print(param) 

class StartPage(tk.Frame): 

    def __init__(self, parent, controller): 
     tk.Frame.__init__(self,parent) 

     label = tk.Label(self, text="Start Page", font=LARGE_FONT) 
     label.pack(pady=10,padx=10) 
     button1 = tk.Button(self, text="Visit Page 1", 
          command=lambda: controller.show_frame(PageOne)) 
     button1.pack() 

class PageOne(tk.Frame): 

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

app = ImgComp() 
app.mainloop() 
+1

'フレーム(幅= ...、高さ= ...)'を使用して下のボタンを置くことができますが、内部の要素ならば、それはサイズを変更しますが小さかったり外側の要素が大きく、 'fill'、' resize'を使った場合 - [Tkinterフレームがウィジェットのサイズに従ってサイズ変更されないようにする](https://stackoverflow.com/questions/7684484/stop-a-tkinter- – furas

+0

私はプロパティの塗りつぶしを削除し、コードから展開します。私のコードのどの行にFrame(width = 500、height = 300)を書きますか? –

+1

あなたのコードのどこに幅と高さを設定しようとしているのかわかりません。各フレームを異なるサイズにしますか? –

答えて

1

widthheight
を設定し、あなたはそれを維持するためにgrid_propagate(False)を使用する必要があります。

container = tk.Frame(self, width=500, height=250) 
    #container['width'] = 500 
    #container['height'] = 250 
    container.grid_propagate(False) 

enter image description here

あなたはすべてのPagesにbacgroundを追加した場合、あなたは彼らが

frame = F(container, self) 
frame['bg'] = 'red' 

enter image description here

そして今、あなたはすべての領域を使用するように内部要素を整理することができ、フルサイズを使用して表示されます。

は、たとえば、あなたはpack(side='bottom')

button1 = tk.Button(self, text="Visit Page 1", ...) 
    button1.pack(side='bottom') 

enter image description here

関連する問題