【发布时间】:2018-04-07 13:37:27
【问题描述】:
我想创建一个底部有水平滚动条的主窗口。
然后这个主窗口应该包含不确定数量的带有垂直滚动条的较小文本小部件。
下面的代码将 10 个滚动文本小部件打包成一个更大的文本小部件。
我的问题是“尝试”使用window_frame.pack(side="left", fill="both", expand=True) 来放置文本小部件。这给了我想要的高度(全屏),但我失去了水平滚动条的使用,并且所有十个小部件都不可见。
在第二次尝试中,我使用了text_box.window_create("1.0", window=window_frame),水平滚动条有效,我可以查看所有 10 个文本小部件,但我不知道如何让它们在垂直轴上填满屏幕。
有什么方法可以实现水平滚动功能并使文本小部件处于全屏高度(不测量字体大小)?
或者我是否以完全错误的方式处理这个问题?
这是该问题的可行且简化的版本。只需点击 Escape 即可摧毁窗户。
import tkinter as tk
from tkinter import ttk
import tkinter.scrolledtext as St
root = tk.Tk()
root.bind("<Escape>", exit)
root.wm_attributes("-fullscreen", True)
#Mother Text Box to hold the windows
f = tk.Frame(root, background = "black")
f.pack(fill="both", expand=True)
vbar = ttk.Scrollbar(f, orient="horizontal")
text_box = tk.Text(f, xscrollcommand=vbar.set, wrap=tk.NONE, border=0, borderwidth=0)
text_box.pack(fill="both", expand=1)
vbar.pack(fill="x", side="bottom", pady=0)
vbar.config(command=text_box.xview)
window_frame = tk.Frame(text_box, background="yellow")
# This is attempt one #
#window_frame.pack(side="left", fill="both", expand=True)
# This is attempt two #
text_box.window_create("1.0", window=window_frame)
window_frame.configure(pady=2, padx=2)
text_box_list = []
for n in range(0, 10):
text_box_list.append(St.ScrolledText(window_frame))
text_box_list[n].pack(side="left", fill="both", expand=True)
root.mainloop()
def exit(root, event):
root.destroy()
【问题讨论】: