Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/289.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 如何使用包装进行L形布局?_Python_Tkinter_Tk - Fatal编程技术网

Python 如何使用包装进行L形布局?

Python 如何使用包装进行L形布局?,python,tkinter,tk,Python,Tkinter,Tk,我有: 它使用网格进行布局。我怎样才能只使用pack而不使用额外的小部件来获得相同的L形布局 帧”父级(不一定是顶级)将仅将这3个帧作为子级。理想情况下,布局应该可以调整大小。这是不可能的。下面的演示显示了每个侧边选项可能的所有形状: try: # In order to be able to import tkinter for import tkinter as tk # either in python 2 or in pytho

我有:

它使用
网格
进行布局。我怎样才能只使用
pack
而不使用额外的小部件来获得相同的L形布局

”父级(不一定是顶级)将仅将这3个
作为子级。理想情况下,布局应该可以调整大小。

这是不可能的。下面的演示显示了每个
侧边
选项可能的所有形状:

try:                        # In order to be able to import tkinter for
    import tkinter as tk    # either in python 2 or in python 3
except ImportError:
    import Tkinter as tk


if __name__ == '__main__':
    root = tk.Tk()
    rgb = {'red', 'green', 'blue'}
    frames = dict()
    for color in rgb:
        frames[color] = tk.Frame(root, height=64, width=64, bg=color)
    frames['red'].grid(row=0, column=0)
    frames['green'].grid(row=1, column=0)
    frames['blue'].grid(row=1, column=1)
    root.mainloop()
将tkinter作为tk导入
类ParentFrame(tk.Frame):
定义初始(自我,主):
tk.Frame.\uuuuu init\uuuuuuu(自,主)
自身颜色=(‘红色’、‘绿色’、‘蓝色’)
self.\u c\u len=len(self.\u颜色)
self.labels=dict()
自我评价。_i=0
self.\u创建\u小部件()
self.side_组合()
def_创建_小部件(自):
对于自我中的_颜色。_颜色:
self.labels[_color]=tk.Label(self,高度=16,宽度=16,
fg='白色',bg='U颜色)
def侧_组合(自):
_侧选项=(‘顶部’、‘底部’、‘左侧’、‘右侧’)
_o_len=len(_side_opts)
如果自我<(\u o\u len**3):
_cur_opt=dict()
_cur_opt['red']=\u side\u opts[self.\u i/(\u o_len**2)]
_cur_opt['green']=\u side_opts[(self.\u i/\u o_len)%\u o_len]
_cur_opt['blue']=\u side\u opts[self.\u i%\u o_len]
对于自身颜色的_clr:
self.labels[\u clr].pack(side=\u cur\u opt[\u clr])
self.labels[\u clr]['text']=\u cur\u opt[\u clr]
自._i+=1
自我后(250,自我侧_组合)
其他:
自我评价。_i=0
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
root=tk.tk()
测试=父帧(根)
test.pack(fill='both',expand=True)
root.mainloop()
这是不可能的。下面的演示显示了每个
侧边
选项可能的所有形状:

try:                        # In order to be able to import tkinter for
    import tkinter as tk    # either in python 2 or in python 3
except ImportError:
    import Tkinter as tk


if __name__ == '__main__':
    root = tk.Tk()
    rgb = {'red', 'green', 'blue'}
    frames = dict()
    for color in rgb:
        frames[color] = tk.Frame(root, height=64, width=64, bg=color)
    frames['red'].grid(row=0, column=0)
    frames['green'].grid(row=1, column=0)
    frames['blue'].grid(row=1, column=1)
    root.mainloop()
将tkinter作为tk导入
类ParentFrame(tk.Frame):
定义初始(自我,主):
tk.Frame.\uuuuu init\uuuuuuu(自,主)
自身颜色=(‘红色’、‘绿色’、‘蓝色’)
self.\u c\u len=len(self.\u颜色)
self.labels=dict()
自我评价。_i=0
self.\u创建\u小部件()
self.side_组合()
def_创建_小部件(自):
对于自我中的_颜色。_颜色:
self.labels[_color]=tk.Label(self,高度=16,宽度=16,
fg='白色',bg='U颜色)
def侧_组合(自):
_侧选项=(‘顶部’、‘底部’、‘左侧’、‘右侧’)
_o_len=len(_side_opts)
如果自我<(\u o\u len**3):
_cur_opt=dict()
_cur_opt['red']=\u side\u opts[self.\u i/(\u o_len**2)]
_cur_opt['green']=\u side_opts[(self.\u i/\u o_len)%\u o_len]
_cur_opt['blue']=\u side\u opts[self.\u i%\u o_len]
对于自身颜色的_clr:
self.labels[\u clr].pack(side=\u cur\u opt[\u clr])
self.labels[\u clr]['text']=\u cur\u opt[\u clr]
自._i+=1
自我后(250,自我侧_组合)
其他:
自我评价。_i=0
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
root=tk.tk()
测试=父帧(根)
test.pack(fill='both',expand=True)
root.mainloop()
但你为什么要这么做?将框架用于整齐的行或列,然后将其打包到更复杂的结构中,要容易得多


但你为什么要这么做?将框架用于整齐的行或列,然后将其打包到更复杂的结构中,要容易得多

在这种特定情况下,如果希望每个帧占据屏幕的1/4,并在窗口调整大小时展开,
pack
根本无法做到这一点。当您调整窗口大小时,无法使用
pack
和额外的帧使左上角小部件占据屏幕的1/4


Tkinter同时具有
pack
grid
,因为它们解决了两种不同类型的布局问题。如果它们可以轻松解决所有相同的问题,那么就不需要同时解决这两个问题。

在这种特定情况下,如果您希望每个帧占据屏幕的1/4并在窗口调整大小时展开,
pack
根本无法做到这一点。当您调整窗口大小时,无法使用
pack
和额外的帧使左上角小部件占据屏幕的1/4


Tkinter同时具有
pack
grid
,因为它们解决了两种不同类型的布局问题。如果他们能很容易地解决所有相同的问题,那么就没有必要同时解决这两个问题。

我试图解决一个类似的问题,但没能解决。我想知道这是否有可能,显然是的。此外,我认为这可能是一个很好的骗局,用于要求
pack
的顽固问题。谢谢。顺便说一句,有什么可伸缩的方法吗?只要你调整窗口的大小,你就会看到这一点都不一样。我试图解决一个类似的问题,但没能解决。我想知道这是否有可能,显然是的。此外,我认为这可能是一个很好的骗局,用于要求
pack
的顽固问题。谢谢。任何可伸缩的方式,顺便说一句?只要你调整窗口大小,你就会看到这根本不一样。如果你问如何制作L形-试试columnspan=2或rowspan=2-…如果你问如何制作L形-试试columnspan=2或rowspan=2-。。。
frames['red'].pack(anchor=tk.W)
frames['green'].pack(side=tk.LEFT)
frames['blue'].pack()