2017-08-31 50 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」不縮小框架。第一次frame1沒有因pack_propagate而收縮,但是在點擊「button1」後,當第二幀出現時,即使我已經對第二幀使用了「pack_propagate」,它也不會跟隨「pack_propagate」。 –

+0

@AnupamYadav好吧,目前,當我按下'按鈕1'時,綠框沒有出現,你是否打算出現綠框? – officialaimm

回答

0

在mainloop()之前加上這個,它似乎解決了這個問題。老實說,我不確定它是如何工作的,但看起來確實如此。我看到你用frame1那樣做了,我就像:嘿,爲什麼不是frame2? :D

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

root.mainloop() 
+1

謝謝。它的工作。我在函數中添加了「pack_propagate」。 –