我有以下代碼。我的問題是我無法正確調整幀的大小。當我運行程序時,一切都如預期的那樣。但是當我調整它的大小時,我想保留原始視圖。無法調整多個網格的大小
from Tkinter import *
import os
import sys
ALL=N+S+E+W
class Application(Frame):
def __init__(self,master=None):
Frame.__init__(self,master)
self.master.rowconfigure(0,weight=1)
self.master.columnconfigure(0,weight=1)
self.grid(sticky=ALL)
self.rowconfigure(0,weight=1)
myframe1=Frame(self,bg='green')
myframe1.bind("<Button-1>",self.handler1)
myframe1.grid(row=0,column=0,rowspan=1,columnspan=2,sticky=ALL)
self.rowconfigure(1,weight=1)
myframe2=Frame(self,bg='blue')
myframe2.bind("<Button-1>",self.handler2)
myframe2.grid(row=1,column=0,rowspan=1,columnspan=2,sticky=ALL)
buttons=('Red','Blue','Green','Black')
button=[0]*4
for c in range(4):
self.rowconfigure(c+2,weight=1)
self.columnconfigure(c,weight=1)
button[c]=Button(self,text="{0}".format(buttons[c]),command=lambda x=buttons[c]:self.colors(x))
button[c].grid(row=2,column=c,sticky=E+W)
self.columnconfigure(4,weight=1)
self.rowconfigure(6,weight=1)
button1=Button(self,text='{0}'.format('Open'),command=self.content)
button1.grid(row=2,column=4,sticky=E+W)
f=Frame(self,bg='red')
self.myentry=Entry(f)
self.myentry.grid(row=0,column=4,sticky=ALL)
self.text=Text(f)
self.text.grid(row=1,column=4,sticky=ALL)
f.grid(row=0,column=2,rowspan=2,columnspan=3,sticky=ALL)
...
我試過很多的組合rowconfigure
,columnconfigure
,rowspan
,columnspan
,但我失敗了!
我原來的看法是:
在另一個方向:
在一個方向上調整大小後白色區域是我想要調整大小的Text
小部件(也是藍色和綠色區域)。
:感謝您的directions.I沒儘管如此,你還是要說:「你只是在紅框中放置兩個小部件(self.myentry和self.text),但你把它們放在第2和第4列中。」我把它們都放在了第4列。當你說他們與他們的父母相關時,你的意思是f.grid(row = 0,column = 2)?那是什麼意思?我認爲我的問題在於for循環。原始視圖,佈局很好。調整大小是一個問題(我不希望紅色背景,文本和輸入小部件必須在其位置ition) – George
我對第2列與第4列的錯誤。但是,當只有一個小部件時,將它放入第4列是沒有意義的。您的問題在循環中不是*,它與行和列的權重以及不正確使用列有關。當你說'f.grid(row = 0,...)'時,f被放在'self'(它的父)的第0行中。當你說'self.text.grid(row = 1,...)',那是f *的第一行*,因爲那是它的父親。 f在第0行沒有任何結果。每個容器('self'和'f')都有自己的「網格」可以這麼說。 –
:好吧,我糾正了f幀,但仍然是相同的。按鈕是好的,所以還有什麼我必須改變?我無法確定! – George