2012-05-05 17 views
6

Python'da Tkinter ile basit bir kullanıcı arayüzü yazmaya çalışıyorum ve yeniden boyutlandırmak için bir kılavuz içindeki widget'ları alamıyorum. Ana pencereyi ne zaman yeniden boyutlandırırsam, giriş ve düğme widget'ları hiç ayarlanmaz.Tk kılavuz düzgün şekilde yeniden boyutlandırılamaz

class Application(Frame): 
    def __init__(self, master=None): 
     Frame.__init__(self, master, padding=(3,3,12,12)) 
     self.grid(sticky=N+W+E+S) 
     self.createWidgets() 

    def createWidgets(self): 
     self.dataFileName = StringVar() 
     self.fileEntry = Entry(self, textvariable=self.dataFileName) 
     self.fileEntry.grid(row=0, column=0, columnspan=3, sticky=N+S+E+W) 
     self.loadFileButton = Button(self, text="Load Data", command=self.loadDataClicked) 
     self.loadFileButton.grid(row=0, column=3, sticky=N+S+E+W) 

     self.columnconfigure(0, weight=1) 
     self.columnconfigure(1, weight=1) 
     self.columnconfigure(2, weight=1) 

app = Application() 
app.master.title("Sample Application") 
app.mainloop() 

cevap

14

Çerçeve pencere öğenizin de genişlemesi için bir kök pencere ve sütun yapılandırın. Sorun şu ki, bir tane belirtmezseniz örtük bir kök pencereniz var ve çerçevenin kendisi düzgün bir şekilde genişlemiyor.

root = Tk() 
root.columnconfigure(0, weight=1) 
app = Application(root) 
+2

, dikey genişletmeye izin vermek için rowconfigure ekledi –

0

Bunun için takımını kullanın:

İşte benim kodudur. Çoğu durumda bu yeterlidir. Ama ikisini birden karıştırmayın!

class Application(Frame): 
    def __init__(self, master=None): 
     Frame.__init__(self, master) 
     self.pack(fill = X, expand =True) 
     self.createWidgets() 

    def createWidgets(self): 
     self.dataFileName = StringVar() 
     self.fileEntry = Entry(self, textvariable=self.dataFileName) 
     self.fileEntry.pack(fill = X, expand = True) 
     self.loadFileButton = Button(self, text="Load Data",) 
     self.loadFileButton.pack(fill=X, expand = True) 
+0

Izgara yerine paket kullanmayı düşünürüm ancak okuduğum kılavuzdan, widget'leri yeniden boyutlandırmak için çalışmalıyım. – mjn12

+0

Şebekeyi uzun süre kullanmadım bu yüzden bilmiyorum. iyi şanslar! – User

0

Çalışan bir örnek. Her bir sütun ve satır için yapılandırmayı açıkça ayarlamanız gerektiğini unutmayın, ancak aşağıdaki düğmenin sütun adı, görüntülenen sütunların sayısından daha büyük bir sayıdır.

## row and column expand 
top=tk.Tk() 
top.rowconfigure(0, weight=1) 
for col in range(5): 
    top.columnconfigure(col, weight=1) 
    tk.Label(top, text=str(col)).grid(row=0, column=col, sticky="nsew") 

## only expands the columns from columnconfigure from above 
top.rowconfigure(1, weight=1) 
tk.Button(top, text="button").grid(row=1, column=0, columnspan=10, sticky="nsew") 
top.mainloop() 
İlgili konular