Python 防止scrolledtext占用整个父窗口,禁止显示其他窗口小部件

Python 防止scrolledtext占用整个父窗口,禁止显示其他窗口小部件,python,user-interface,tkinter,text,python-3.7,Python,User Interface,Tkinter,Text,Python 3.7,所以我实际上是在编写一个简单的GUI程序,它利用了tkinter.ScrolledText模块中的ScrolledText小部件 问题是这个ScrolledText小部件似乎占用了父窗口中的全部可用空间。它禁止我在同一父窗口中放入任何其他小部件。我尝试过使用grid和pack Geomanager(我知道place并不是在所有情况下都非常有用),但其他小部件都不会显示(无论是在scrolledtext小部件的上方还是下方) 这是密码-- 将tkinter作为tk导入 将tkinter.scrol

所以我实际上是在编写一个简单的GUI程序,它利用了tkinter.ScrolledText模块中的ScrolledText小部件

问题是这个ScrolledText小部件似乎占用了父窗口中的全部可用空间。它禁止我在同一父窗口中放入任何其他小部件。我尝试过使用grid和pack Geomanager(我知道place并不是在所有情况下都非常有用),但其他小部件都不会显示(无论是在scrolledtext小部件的上方还是下方)

这是密码--

将tkinter作为tk导入
将tkinter.scrolledtext作为sct导入
win2=tk.tk()
win2.geometry('1150x680')
win2.wm_几何体('+80+20')
txtbox=sct.scrolled文本(win2,宽度=500,高度=350,背景='#fff',前景='#00f')
网格(行=0,列=0)
txt='1

我不知道我在这里遗漏了什么,所以请建议我解决这个问题的方法。
谢谢:)

带网格的解决方案

问题在于网格的配置:默认情况下,网格单元格会展开以适应内容。在您的例子中,文本小部件非常大,以至于下面一行中的按钮不在屏幕上。要解决此问题,您需要配置第一行和第一列以使用GUI进行拉伸:

win2.rowconfigure(0, weight=1)
win2.columnconfigure(0, weight=1)
并使用
sticky
选项使文本小部件填充单元格:

txtbox.grid(row=0, column=0, sticky='ewns')
这样,文本小部件将适应窗口大小,而不是相反

完整代码:

import tkinter as tk
import tkinter.scrolledtext as sct

win2 = tk.Tk()
win2.geometry('1150x680')
win2.wm_geometry('+80+20')
win2.rowconfigure(0, weight=1)
win2.columnconfigure(0, weight=1)
txtbox = sct.ScrolledText(win2, width=500, height=350, bg='#fff', fg='#00f')
txtbox.grid(row=0, column=0, sticky='ewns')
txt = '<ABOUT 60 Lines TEXT HERE>'

txtbox.insert(1.0, txt)
txtbox.configure(state=tk.DISABLED)

tk.Button(win2, text='Got It', command=win2.destroy).grid(row=1, column=0)

您是否知道
滚动文本的宽度和高度是字符,而不是像素,或者您有意创建一个500字符宽的文本小部件?@BryanOakley哦,我不知道。我经常对此感到困惑(可能是因为我过去使用CSS和HTMLXD的经验),但谢谢你。我将尝试不添加这些参数。[这与问题或解决方案无关-但实际上我一直在等待你对我的第一个问题的回答-你太棒了:)@Bryan,效果不错。非常感谢你。因此,我将[j_4321]的答案标记为已接受的答案。。
import tkinter as tk
import tkinter.scrolledtext as sct

win2 = tk.Tk()
win2.geometry('1150x680')
win2.wm_geometry('+80+20')
win2.rowconfigure(0, weight=1)
win2.columnconfigure(0, weight=1)
txtbox = sct.ScrolledText(win2, width=500, height=350, bg='#fff', fg='#00f')
txtbox.grid(row=0, column=0, sticky='ewns')
txt = '<ABOUT 60 Lines TEXT HERE>'

txtbox.insert(1.0, txt)
txtbox.configure(state=tk.DISABLED)

tk.Button(win2, text='Got It', command=win2.destroy).grid(row=1, column=0)
import tkinter as tk
import tkinter.scrolledtext as sct

win2 = tk.Tk()
win2.geometry('1150x680')
win2.wm_geometry('+80+20')

tk.Button(win2, text='Got It', command=win2.destroy).pack(side='bottom')
txtbox = sct.ScrolledText(win2, width=500, height=350, bg='#fff', fg='#00f')
txtbox.pack(fill='both', expand=True)
txt = '<ABOUT 60 Lines TEXT HERE>'

txtbox.insert(1.0, txt)
txtbox.configure(state=tk.DISABLED)