如何并排放置不同大小的小部件?

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 时,它显示如下:

您可以使用参数 columnspanrowspan 使其中一个小部件跨越多个行和列。在您的情况下,右侧的文本小部件和滚动条应跨越多行:

calculation_scrollbar.grid(row=1, rowspan=6, column=5, sticky='NS')

至少我认为 6 行应该足够了,因为另一个滚动条位于第 6 行。只要给 text-widget 相同的行跨度,否则它看起来会很尴尬。

编辑:有时使用 Frame-widgets 来组织您的 window 也是一个好主意。在你的情况下,我会推荐三个框架(左上、左下、右)。然后每个帧都有自己的网格。