【问题标题】:Py/Tk Grid don't behave propertyPy/Tk 网格不表现属性
【发布时间】:2013-10-03 18:51:44
【问题描述】:

Tkinter 上的网格无法正确调整控件的大小。这是我的代码:

menubar = Menu(frm)
txt = Text(frm)
def TxtTupleLineCol():
    str = txt.index(INSERT)
    return tuple(str.split(sep='.'))
scrl = Scrollbar(frm, command=txt.yview)
scrl.grid(column=1, sticky=(E + N + S))
txt.config(yscrollcommand=scrl.set)
txt['wrap'] = WORD
scrlw = Scrollbar(frm, orient=HORIZONTAL, command=txt.xview)
scrlw.grid(row=1, sticky=(S + E + W))
st = StatusBar(frm)
tu  = TxtTupleLineCol()
st.variable.set(('Linha:' + tu[-2] + ' Coluna:' + tu[-1]))
txt.config(xscrollcommand=scrlw.set)
txt.grid(row=0, column=0, sticky=NSEW)
st.grid(row=2, sticky=S + E + W)
filen = Cfg("")
frm.columnconfigure(0, weight=1)
frm.columnconfigure(1, weight=1)
frm.rowconfigure(1,weight=1)
frm.rowconfigure(0, weight=1)
frm.grid_propagate(False)

如果我调整窗口大小,它会在滚动和文本之间留出空间。 #FIXME?(在另一部分代码中我添加了row/col config。/葡萄牙语不影响理解。)

【问题讨论】:

  • 在您最近的编辑中,您为两列添加了权重。你不想那样做。您只希望带有文本小部件的列具有权重。权重的意思是“让我扩展以填充额外的空间”,而您只希望文本小部件扩展。如果两列具有相同的权重,它们将扩展相等的量以填充额外的空间,从而产生一个带有大量额外空间的滚动条。
  • @BryanOakley:谢谢,已修复!

标签: python tkinter


【解决方案1】:

您的代码不会运行,但从我看到的情况来看,您似乎没有给行或列赋予任何权重,这通常是导致使用网格时“无法正确调整大小”问题的原因。最有可能的是,添加这样的内容可以解决问题:

frm.columnconfigure(0, weight=1)

【讨论】:

  • 我写道:>在另一部分代码中,我添加了该行/列配置。
  • @Carlos:请放心,tkinter 在调整大小方面工作正常。如果您的程序未正确调整大小,则说明您做错了什么。如果你不向我们展示你所有的代码,我们就不可能猜到你做错了什么。
  • @Carlos:我不明白“传播网格是错误的吗?”。您是在询问关闭传播吗?如果是这样,那就没有对错之分了。然而,关闭传播肯定会改变您的应用的行为方式。
猜你喜欢
  • 2023-01-11
  • 2021-11-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-02
  • 1970-01-01
  • 1970-01-01
  • 2022-11-12
相关资源
最近更新 更多