Python 小部件不可见或未填充所有预期空间
我希望显示两个帧和一个画布,以便:Python 小部件不可见或未填充所有预期空间,python,tkinter,Python,Tkinter,我希望显示两个帧和一个画布,以便: 红色框架必须位于窗口顶部,跨越画布和蓝色框架 蓝色的框架和画布在窗口的底部。画布在右边 我没有得到预期的结果。这是我的密码: from Tkinter import * class Mine(Frame): def __init__(self,master): Frame.__init__(self,master) self.frameh() self.framev() self.thecanv
- 红色框架必须位于窗口顶部,跨越画布和蓝色框架李>
- 蓝色的框架和画布在窗口的底部。画布在右边
from Tkinter import *
class Mine(Frame):
def __init__(self,master):
Frame.__init__(self,master)
self.frameh()
self.framev()
self.thecanvas()
# horizontal frame on top spanning over 2 columns
def frameh(self):
self.fh=Frame(root,width=400,height=40,bg="red")
self.fh.grid(sticky=N,row=0,columnspan=2)
# vertical frame on bottom
def framev(self):
self.fv=Frame(root,height=200,bg="blue")
self.fv.grid(sticky=S+W,row=1,column=0)
def thecanvas(self):
self.c=Canvas(root,width=500,height=200,bg="black")
self.c.grid(sticky=S+E,row=1,column=1)
if __name__=="__main__":
root=Tk()
root.wm_title("mine")
m=Mine(root)
root.mainloop()
我想您应该为
frameh
设置columnspan=2
,这样它就跨越了framev
和canvas
列(加上额外的sticky
使其填满整个宽度),并为framev
定义一个非零的最小宽度:
...
def frameh(self):
self.fh=Frame(root, width=400, height=40, bg="red")
self.fh.grid(sticky=N+E+W, row=0, columnspan=2)
def framev(self):
self.fv=Frame(root, height=200, width=100, bg="blue")
self.fv.grid(sticky=S+W, row=1, column=0)
...
这给了我:
预期的结果是什么,你得到了什么?如果没有合适的图像,我们无法运行此操作-这是复制问题所必需的吗?预期结果是使用黑色小球突出显示的结果。该图像只是一个图标,我将从我的question@Nakkini我已经编辑了你的标题(更准确地说)和标签(删除了那些没有你想要的含义的标签)(参考我的其他评论)@Ericleveil非常感谢谢谢你,我做了你让我做的事,但是我只看到了红色边框和画布。您是否为
framev
设置了非零宽度?我已经添加了我看到的。对不起,你是对的,我忘记了底部框架的宽度。它很好用。非常感谢你。你还应该编辑你的问题标题,使其内容更加丰富,并删除除python和tkinter之外的标记(标记不是关键字,每个标记都有一个精确的含义,你可以通过将鼠标悬停在上面看到)@Ericleveil作为对问题的评论比作为答案更好。或者,建议自己编辑!