Python tkinter网格,在ScrolledText小部件中将忽略行值

时间:2019-03-29 23:39:05

标签: python-3.x tkinter

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

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()

1 个答案:

答案 0 :(得分:1)

如果我正确解释了布莱恩·奥克利(Bryan Oakley)在上述注释中所说的内容,则问题是由于默认情况下我的代码未将任何内容放入第2行,因此它(第2行)的高度为0。这意味着我将ScrollText Widget按预期放入第3行,但由于第2行的高度在视觉上看起来像是放在第2行,所以我在代码中添加了一个空白标签,高度为1,并将其放在第2行。这提供了我一直在寻找的空间。这是我添加的其他代码。

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

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