Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使这些小部件填充到主框架中?_Python_Tkinter - Fatal编程技术网

Python 如何使这些小部件填充到主框架中?

Python 如何使这些小部件填充到主框架中?,python,tkinter,Python,Tkinter,我试图让这些条目和文本小部件占据它们框架中的所有空间,但它们的大小似乎是固定的。网格工具没有帮助 l = Frame(self, bg=ard) l.grid(row=0, column = 2, rowspan = 2, columnspan = 3, sticky = ALL) self.enter = Entry(l, width=100) self.enter.

我试图让这些条目和文本小部件占据它们框架中的所有空间,但它们的大小似乎是固定的。网格工具没有帮助

                l = Frame(self, bg=ard)
                l.grid(row=0, column = 2, rowspan = 2, columnspan = 3, sticky = ALL)
                self.enter = Entry(l, width=100)
                self.enter.grid(row=0, column=2, rowspan=1, columnspan=3, sticky=ALL)
                self.outro = Text(l, width=100, height=100)
                self.outro.grid(row=1, column=2, rowspan=1, columnspan=3, sticky=ALL)
以下是整个程序,以防万一:
从tkinter导入*
导入操作系统路径
root=Tk()
全部=N+S+W+E
按钮=[“红色”、“蓝色”、“绿色”、“黑色”、“打开”]
def colorgen():
尽管如此:
产量“红色”
产量“蓝色”
产量“绿色”
产“橙”
产量“紫色”
color=colorgen()
def坐标(事件):
打印(“X:{0}Y:{1}”。格式(event.X,event.Y))
课程申请(框架):
def uuu init uuu(self,master=None):
帧。\uuuu初始化(自,主)
self.master.rowconfigure(0,权重=1)
self.master.columnconfigure(0,权重=1)
self.grid(粘性=全部)
self.create_widgets()
def创建_小部件(自):
对于范围(2)内的r:
self.rowconfigure(r,权重=1)
帐户=0
对于范围(5)内的c:
self.columnconfigure(c,权重=1)
ard=下一个(颜色)
如果c==0:
button0=Button(self,text=buttons[c],command=lambda:self.changeoutro(0)).grid(行=4,列=c,粘滞=ALL)
elif c==1:
button1=按钮(self,text=buttons[c],command=lambda:self.changeoutro(1)).grid(行=4,列=c,粘滞=ALL)
elif c==2:
button2=按钮(self,text=按钮[c],command=lambda:self.changeoutro(2)).grid(行=4,列=c,粘性=ALL)
elif c==3:
button3=按钮(self,text=buttons[c],command=lambda:self.changeoutro(3)).grid(行=4,列=c,粘滞=ALL)
其他:
按钮=按钮(self,text=buttons[c],command=self.opener).grid(行=4,列=c,粘滞=ALL)
如果c==0或c==1:
l=帧(自身,背景=ard)
l、 绑定(“,坐标)
l、 网格(行=c,列=0,行span=1,列span=2,粘性=ALL)
elif c==2:
l=帧(自身,背景=ard)
l、 网格(行=0,列=2,行span=2,列span=3,粘性=ALL)
self.enter=Entry(长,宽=100)
self.enter.grid(行=0,列=2,行span=1,列span=3,粘滞=ALL)
self.outro=文本(长,宽=100,高=100)
self.outro.grid(行=1,列=2,行span=1,列span=3,粘性=ALL)
def开启器(自动):
消息=[]
fname=self.enter.get()
如果os.path.isfile(fname):
f=打开(fname,'r')
对于f中的行:
message.append(行)
self.outro.insert(1.0,''.join(消息))
def换热器(自身,c):
self.outro.config(fg=按钮[c])
应用程序=应用程序(主程序=根)
app.mainloop()

我不知道您想要完成什么,所以我无法给出一个明确的解决方案。然而,我看到了一个常见的错误,或者导致了像您所描述的那样的问题

首先,您正在创建一个框架
l
,并在该框架内使用
grid
来管理小部件。但是,您没有为该框架内的任何行或列赋予权重,因此小部件不会在该框架中使用任何额外空间。您需要调用
rowconfigure
columnconfigure
为至少一行和一列赋予正权重

请注意,如果此框架仅包含一个条目和一个文本,则对于此特定框架使用
pack
比使用
grid
更容易一些。您可以将条目打包到顶部,将文本打包到底部,而不必担心列的权重:

self.enter.pack(side="top", fill="x", expand=False)
self.outro.pack(side="bottom", fill="both", expand=True)
其次,你可能误解了tkinter的工作原理。您告诉条目小部件跨越两行三列,但是父小部件(
l
)只有一列,只有两行。使用网格行和列时,仅在直接父窗口中应用。无论您的GUI作为一个整体是否有多行和/或多列,当您在
l
中放置某些内容时,行和列仅与
l
中的行和列相关

换句话说,没有理由在
l
中使用
columnspan
,因为只有一列,同样的原因,将条目和文本小部件放在第2列也没有意义

self.enter.pack(side="top", fill="x", expand=False)
self.outro.pack(side="bottom", fill="both", expand=True)