如何并排放置不同大小的小部件?
How to place different sized widgets side by side?
我有以下小部件,它们定义为带有文本的滚动条:
from tkinter import ttk
from tkinter import *
# -------------
# set_up_output_scrollbar
def set_up_output_scrollbar():
output_scrollbar = Scrollbar(root)
output_scrollbar_text = Text(root, height=scrollbar_height, width=scrollbar_width)
output_scrollbar.config(command=output_scrollbar_text.yview)
return output_scrollbar, output_scrollbar_text
# -------------
# set_up_calculations_scrollbar
def set_up_calculation_scrollbar():
calculation_scrollbar = Scrollbar(root)
calculation_scrollbar_text = Text(root, height=calculation_scrollbar_height, width=calculation_scrollbar_width)
calculation_scrollbar.config(command=calculation_scrollbar_text.yview)
return calculation_scrollbar, calculation_scrollbar_text
设置示例:
# -------------------------------------------
# PROGRAMM SET UP
if __name__ == '__main__':
# ---------------------------
# main definition of gui
root = Tk()
root.title('Wetterderivate und Klima v_a0.0.1')
#icon_path = get_local_path()
#root.iconbitmap(icon_path + 'icon.ico') # icon
root.geometry("1920x1080")
root.resizable(width=False, height=False)
# ---------------------------
# call initial functions and set inital values
scrollbar_width = 75
scrollbar_height = 15
calculation_scrollbar_height = 25
calculation_scrollbar_width = 100
# -------------
# output_scrollbar
output_scrollbar, output_scrollbar_text = set_up_output_scrollbar()
output_scrollbar_text.grid(row=6, column=0, sticky='NS')
output_scrollbar.grid(row=6, column=1, sticky='NS')
# -------------
# calculation_scrollbar
calculation_scrollbar, calculation_scrollbar_text = set_up_calculation_scrollbar()
calculation_scrollbar_text.grid(row=1, column=4, sticky='NS')
calculation_scrollbar.grid(row=1, column=5, sticky='NS')
root.mainloop()
如何将它们并排放置? output_scrollbar
上面有很多按钮和菜单,所以当我放置 calculation_scrollbar
时,它显示如下:
您可以使用参数 columnspan
和 rowspan
使其中一个小部件跨越多个行和列。在您的情况下,右侧的文本小部件和滚动条应跨越多行:
calculation_scrollbar.grid(row=1, rowspan=6, column=5, sticky='NS')
至少我认为 6 行应该足够了,因为另一个滚动条位于第 6 行。只要给 text-widget 相同的行跨度,否则它看起来会很尴尬。
编辑:有时使用 Frame-widgets 来组织您的 window 也是一个好主意。在你的情况下,我会推荐三个框架(左上、左下、右)。然后每个帧都有自己的网格。
我有以下小部件,它们定义为带有文本的滚动条:
from tkinter import ttk
from tkinter import *
# -------------
# set_up_output_scrollbar
def set_up_output_scrollbar():
output_scrollbar = Scrollbar(root)
output_scrollbar_text = Text(root, height=scrollbar_height, width=scrollbar_width)
output_scrollbar.config(command=output_scrollbar_text.yview)
return output_scrollbar, output_scrollbar_text
# -------------
# set_up_calculations_scrollbar
def set_up_calculation_scrollbar():
calculation_scrollbar = Scrollbar(root)
calculation_scrollbar_text = Text(root, height=calculation_scrollbar_height, width=calculation_scrollbar_width)
calculation_scrollbar.config(command=calculation_scrollbar_text.yview)
return calculation_scrollbar, calculation_scrollbar_text
设置示例:
# -------------------------------------------
# PROGRAMM SET UP
if __name__ == '__main__':
# ---------------------------
# main definition of gui
root = Tk()
root.title('Wetterderivate und Klima v_a0.0.1')
#icon_path = get_local_path()
#root.iconbitmap(icon_path + 'icon.ico') # icon
root.geometry("1920x1080")
root.resizable(width=False, height=False)
# ---------------------------
# call initial functions and set inital values
scrollbar_width = 75
scrollbar_height = 15
calculation_scrollbar_height = 25
calculation_scrollbar_width = 100
# -------------
# output_scrollbar
output_scrollbar, output_scrollbar_text = set_up_output_scrollbar()
output_scrollbar_text.grid(row=6, column=0, sticky='NS')
output_scrollbar.grid(row=6, column=1, sticky='NS')
# -------------
# calculation_scrollbar
calculation_scrollbar, calculation_scrollbar_text = set_up_calculation_scrollbar()
calculation_scrollbar_text.grid(row=1, column=4, sticky='NS')
calculation_scrollbar.grid(row=1, column=5, sticky='NS')
root.mainloop()
如何将它们并排放置? output_scrollbar
上面有很多按钮和菜单,所以当我放置 calculation_scrollbar
时,它显示如下:
您可以使用参数 columnspan
和 rowspan
使其中一个小部件跨越多个行和列。在您的情况下,右侧的文本小部件和滚动条应跨越多行:
calculation_scrollbar.grid(row=1, rowspan=6, column=5, sticky='NS')
至少我认为 6 行应该足够了,因为另一个滚动条位于第 6 行。只要给 text-widget 相同的行跨度,否则它看起来会很尴尬。
编辑:有时使用 Frame-widgets 来组织您的 window 也是一个好主意。在你的情况下,我会推荐三个框架(左上、左下、右)。然后每个帧都有自己的网格。