这是我第一次使用Tkinter,并且试图实现一个简单的GUI,它ScrolledText
的顶部是,底部是带有按钮的文本字段,因此它看起来像下面的第一幅图所示。
我不明白的事情如下:当我尝试垂直调整窗口大小时,文本字段和按钮消失了,只剩下可滚动文本,如下图所示。
但是,我希望还能调整可滚动文本的大小,使所有内容可见。
我已经尝试为滚动文本使用固定高度,但我认为列/行的所有权重都可以,但是仍然找不到问题。(绿色和红色背景可确保确定帧的位置。)
这是我使用的代码:
import tkinter as tk
from tkinter import ttk
import tkinter.scrolledtext as scrolledtext
top = tk.Tk()
# GRID CONFIG
top.grid_rowconfigure((0,1), weight=1)
top.grid_columnconfigure(0, weight=1)
# FRAMES
UpFrame = tk.Frame(top, bg='red')
DownFrame = tk.Frame(top, bg='green')
UpFrame.grid(column=0, row=0, sticky='nsew')
DownFrame.grid(column=0, row=1, sticky='sew')
UpFrame.grid_columnconfigure(0, weight=1)
UpFrame.grid_rowconfigure(0, weight=1)
DownFrame.grid_columnconfigure((0,1), weight=1)
# SCROLLABLE FRAME
scrollable_frame = scrolledtext.ScrolledText(UpFrame,
wrap = tk.WORD,
font = ("Times New Roman", 15))
scrollable_frame.grid(column=0, row=0, sticky='nsew')
# TEXT
my_msg = tk.StringVar()
my_msg.set("")
# TEXT FIELD AND SEND BUTTON
entry_field = tk.Entry(DownFrame, textvariable=my_msg)
entry_field.grid(row=0, column=0, sticky='nsew')
send_button = tk.Button(DownFrame, text="Send")
send_button.grid(row=0, column=1, sticky='nsew')
tk.mainloop()
您遇到的问题是,您已将根窗口的第1行的权重设为1。当您将窗口缩小到小于适合的大小时,网格将平均删除每一行的空间。
如果仅将零行的权重设置为1,则问题将消失。
top.grid_rowconfigure(0, weight=1)
此行为记录在grid的官方文档中:
对于尺寸大于请求的版面的母版,附加空间将根据行和列的权重分配。如果所有权重均为零,则根据锚点值将布局放置在其母版中。对于尺寸小于要求的版面的母版,将根据其权重在列和行中占用空间。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句