2017-08-31 14 views
0

私はこのコードをpython 2.7で書いています。私はこのコードで "pack_propagate"を使っています。初めて "pack_propagate"は正常に動作しますが、ボタン1をクリックすると "pack_propagate"が機能しません。誰でも私に理由を教えてもらえますか?pythonのtkinterのパックマネージャー

from tkinter import * 

root = Tk() 
root.title("pack_forget check") 

tk_window_width = 500 
tk_window_height = 300 
screen_width = root.winfo_screenwidth() # width of the screen 
screen_height = root.winfo_screenheight() # height of the screen 
x = (screen_width/2) - (tk_window_width/2) 
y = (screen_height/2) - (tk_window_height/2) 
root.geometry('%dx%d+%d+%d' %(tk_window_width, tk_window_height, x, y)) 

frame1 = Frame(root, bg="red", height=250, width=250) 
frame2 = Frame(root, bg="green", height=250, width=250) 

def first(): 
    frame1.pack(side=TOP, padx=20, pady=20) 
    frame1.pack_propagate(0) 
    frame2.pack_forget() 

def second(): 
    frame2.pack(side=TOP, padx=20, pady=20) 
    frame2.pack_propagate(0) 
    frame1.pack_forget() 

label1 = Label(frame1, text="Frame 1") 
label1.pack(side="top") 
button1 = Button(frame1, text="button 1", command=second, width=10) 
button1.pack(side="bottom") 

label2 = Label(frame2, text="Frame 2") 
label2.pack(side="top") 
button2 = Button(frame2, text="button 2", command=first, width=10) 
button2.pack(side="bottom") 

frame1.pack(side=TOP, padx=20, pady=20) 
frame1.pack_propagate(0) 

root.mainloop() 
+1

@AnupamYadav「正しく動作していない」とはどういう意味ですか?何が起こると予想され、代わりに何が起こっていますか? – Goyo

+0

"pack_propagate"はフレームを縮小しません。最初の時間フレーム1は、pack_propagateのために縮小されませんでしたが、 "button1"をクリックした後、2番目のフレームが表示されても、2番目のフレームにも "pack_propagate"を使用していますが、 "pack_propagate" –

+0

@AnupamYadav ok、現在、「ボタン1」を押すと緑色のフレームが表示されません。緑色のフレームが表示されますか? – officialaimm

答えて

0

これをmainloop()の前に追加すると、問題が解決されたようです。正直なところ、私はそれがどのように動作するのか不明ですが、そうであるように見えます。私はあなたがframe1とそれをしたのを見た、私はのようだった:ねえ、なぜかframe2? :D

frame2.pack(side=TOP, padx=20, pady=20) 
frame2.pack_propagate(0) 

root.mainloop() 
+1

ありがとうございます。その働き。私は関数内に "pack_propagate"を追加しました。 –

関連する問題