【问题标题】:Python tkinter grid, row value being ignored in a ScrolledText WidgetPython tkinter 网格,在 ScrolledText 小部件中忽略行值
【发布时间】:2019-03-29 23:39:04
【问题描述】:

我想在 Entry 小部件和 ScrollText 小部件之间留一个空间。我认为这就像为网格设置 row=2 一样简单。奇怪的是,无论我为行设置什么,ScrollText 小部件总是从第 1 行开始。我想我可以添加一个空文本小部件来腾出空间,但我很困惑为什么设置行对我不起作用。

from tkinter import *
from tkinter import scrolledtext

main = Tk()
main.title("Grid Prob")
main.geometry('750x750')


text = StringVar()
entSearch = Entry(main, textvariable = text, width = 50, font='arial 12',
                  highlightthickness=1)
entSearch.grid(row = 0, column = 1)

txt = """This is some text to be entered into the text widget. It should 
word wrap when the text exceeds the width of the widget."""
textw = scrolledtext.ScrolledText(main,width=70,height=33)

# No matter what number I put for row the scroll widget always starts in 
# row 1
textw.grid(column=1, row=3)

textw.config(background="light grey", foreground="black",
             font='arial 12', wrap='word')
textw.insert(END, txt)    

main.mainloop()

【问题讨论】:

  • 空行的高度为零。
  • 我不太明白你在说什么。你能再解释一下吗?
  • 在创建了几个测试用例之后,我想我现在明白你在说什么了。请参阅下面的解决方案。

标签: python-3.x tkinter


【解决方案1】:

如果我正确解释了 Bryan Oakley 在上面的 cmets 中所说的话,问题是因为我的代码默认情况下没有将任何内容放入第 2 行,所以它(第 2 行)的高度为 0。这意味着我将我的ScrollText 小部件按预期放入第 3 行,但由于第 2 行的高度在视觉上为 0,因此看起来它被放置在第 2 行。我在代码中添加了一个高度为 1 的空白标签并将其放在第 2 行。这提供了我一直在寻找的空间。这是我添加的附加代码。

label_1 = Label(main, width = "70", height = "1")
label_1.grid(row=1, columnspan=3)

tkinter 让您添加小部件只是为了提供空间似乎很奇怪。如果有人知道更好的方法,请告诉我。

【讨论】:

  • 可以使用grid_rowconfigure方法设置空行的最小尺寸。
猜你喜欢
  • 2015-01-27
  • 1970-01-01
  • 2020-12-22
  • 2016-02-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多