2014-12-09 1 views
2

У меня есть Tkinter PanedWindow, и если я использую sash_place (0,50,50) с функцией, он работает так, как вам нужно. Если, кто бы я ни захотел поместить его изначально, он ничего не делает. Как я могу поместить створку при запуске?Как заставить sash_place() работать при запуске?

import Tkinter as tk 

def move(): 
    allContent.sash_place(0,100,100) 

root = tk.Tk() 
root.geometry("1280x720+80+50") 

# the toolbar 
toolBar = tk.Frame(root, bg="blue") 
toolBar.pack(anchor="nw") 
# buttons 
button_2 = tk.Button(toolBar, text="move", command=move) 
button_2.pack(side="left",) 

# main window 
allContent = tk.PanedWindow(root, background="red", orient="horizontal", relief="ridge", bd=5, sashrelief="raised") 

contentLeft = tk.Frame(allContent) 
allContent.add(contentLeft) 

contentRight = tk.Frame(allContent) 
allContent.add(contentRight) 
allContent.pack(fill="both", expand=1) 

statusBar = tk.Label(root, text="Status") 
statusBar.pack(anchor="sw") 

allContent.sash_place(0,100,100) # How do I get this to work here? 

root.mainloop() 

ответ

3

Положите allContent.update() перед тем allContent.sash_place. Это работает для меня с 3.4.2. У меня появилась идея от here, в которой говорилось, что она использует update_idletasks, которая не работает, и которая только показывала код без него.

+1

Отлично. Это сработало. И если я позвоню перед упаковкой, это будет очень чистое решение. УРА! –

+0

Можете ли вы пометить ответ так, как принято? –

+0

Похоже, я действительно мог (: –

Смежные вопросы