niruipeng 发表于 2021-5-30 22:02:50

大佬们,救命 关于tkinter .grid()

grid()与pack()不能在一起使用,我怎么用grid()做成左边那种全部填充的yan{:5_104:}

Twilight6 发表于 2021-5-30 22:45:46



grid 参数 sticky 设置为 "N+S"

阿奇_o 发表于 2021-5-30 22:48:08

本帖最后由 阿奇_o 于 2021-5-30 22:50 编辑

可以肯定可以,只是没必要,用grid,在这里反而不方便。你直接用pack放置PW后,再用grid放置里面的部件就行了。

一开始就用grid,那你可以参考下面:

from tkinter import *
root = Tk()
root.geometry('600x400')

pw = PanedWindow(showhandle=True, sashrelief=SUNKEN, )
pw.grid(row=0, column=0, sticky="nsew")
# pw.pack(fill=BOTH, expand=True)

left = Label(pw, text='left pane')
pw.add(left)

m2 = PanedWindow(orient=VERTICAL, showhandle=True, sashrelief=SUNKEN)
pw.add(m2)

top = Label(m2, text='top pane')
m2.add(top)

m2.add(Label(m2, text='bottom pane'))

# Button(m2, text="Click me!").pack(padx=100, pady=100,)
Button(m2, text="Click me!").grid(padx=100, pady=100,)

root.rowconfigure(0, weight=1, minsize=400)# 这两是 配合 grid(.., sticky="nsew") 使用的,可能不好理解,自己查资料看看吧
root.columnconfigure(0, weight=1, minsize=600)

root.mainloop()

niruipeng 发表于 2021-5-31 06:58:54

Twilight6 发表于 2021-5-30 22:45
grid 参数 sticky 设置为 "N+S"

我试过了,不好使是不是我用法有问题

niruipeng 发表于 2021-5-31 07:05:21

阿奇_o 发表于 2021-5-30 22:48
可以肯定可以,只是没必要,用grid,在这里反而不方便。你直接用pack放置PW后,再用grid放置里面的部件就行 ...

如果用了pack放置后还能用grid放置吗   我用了之后直接报错_tkinter.TclError: cannot use geometry manager grid inside . which already has slaves managed by pack          其他主要是其他组件用grid放置比较方便{:5_104:}

Twilight6 发表于 2021-5-31 09:41:46

niruipeng 发表于 2021-5-31 06:58
我试过了,不好使是不是我用法有问题



好像确实不行

阿奇_o 发表于 2021-5-31 14:02:09

niruipeng 发表于 2021-5-31 07:05
如果用了pack放置后还能用grid放置吗   我用了之后直接报错_tkinter.TclError: cannot use geometry ma ...

同一级别不能同时用pack又用grid;但不同级别(不同的master)是可以用的。

比如,注释掉不用我代码里使用的第一个grid,而换成pack;
其他的不变(后面我在m2内部用的是grid),结果一样,不会报错,不会有冲突。

根据我的代码,你可以自己做几个不同的尝试,试过了你才知道。
页: [1]
查看完整版本: 大佬们,救命 关于tkinter .grid()