Python Tkinter - 列表框绝对定位

Python Tkinter - Listbox absolute positioning

在 python 3.4 中使用 tkinter。我正在努力放置一个列表框,而不会自动移动所有其他元素。示例代码使用网格放置。我也尝试过使用 .pack() 和 .place()。我试过将它嵌入到几个框架中,我试过 rowspan 和 columnspan。

listbox1 当前已被注释,这显示了 window 的外观,一旦取消注释该行,元素的位置就会发生变化。我希望列表框位于 "clear answers" 按钮下方的位置而不影响其他元素。

import sys
import time
import tkinter
from tkinter import *
from tkinter import messagebox
from tkinter import filedialog

def CreateWindow():
    #Create the window and the menu bar
    MainWindow = Tk() 
    MainWindow.resizable(width=False, height=False) 
    MainWindow.geometry("450x260+150+150") 

    #Create the frame
    TopFrame = Frame(MainWindow).grid(row=0,column=0)

    #Top Labels
    a = Label(TopFrame,text="aaaa aaaaa aaa aaaa \naa aaaaaaa aaaaa:").grid(row=0,column=0)
    b = Label(TopFrame, text="aaaa aaaaa aaa aaaa \naa aaaaaaa aaaa?:").grid(row=0,column=1)
    c = Label(TopFrame, text="aaaa aa aaaaaaaa aaaaaaa:").grid(row=0,column=2)

    #Left Radio Buttons
    d = Radiobutton(TopFrame, text="aaaaa").grid(row=1,column=0,sticky=W)
    e = Radiobutton(TopFrame, text="aaaaa").grid(row=2,column=0,sticky=W)
    f = Radiobutton(TopFrame, text="aaaaa").grid(row=3,column=0,sticky=W)
    g = Radiobutton(TopFrame, text="aaaaa").grid(row=4,column=0,sticky=W)

    #Right Radio Buttons
    h = Radiobutton(TopFrame, text="aaaaa").grid(row=1,column=1,sticky=W)
    i = Radiobutton(TopFrame, text="aaaaa").grid(row=2,column=1,sticky=W)
    j = Radiobutton(TopFrame, text="aaaaa").grid(row=3,column=1,sticky=W)
    k = Radiobutton(TopFrame, text="aaaaa").grid(row=4,column=1,sticky=W)

    #Under left radio buttons
    l = Label(TopFrame,text="aaaaaa aa aaaaaaaa aaaaaa aaaaaa").grid(row=5,column=0,columnspan=2)
    m = Entry(TopFrame).grid(row=6,column=0,columnspan=2)
    n = Button(TopFrame,text="aaaaaaa").grid(row=7,column=0,columnspan=2)
    o = Label(TopFrame,text="aaaaa aaaaa aa").grid(row=8,column=0,columnspan=2)

    #clear button and list box
    ClearButton = Button(TopFrame,text="Clear answers").grid(row=1,column=2)

    #-----List box should be under the convert button and should make other elements move-----
    #ListBox1 = Listbox(TopFrame).grid(row=1,column=2)

    MainWindow.mainloop()

CreateWindow()

有没有办法定位一个不影响周围元素的元素,将一个元素设置在更高层上,使其对其他元素不可见或者只是解决这个问题?非常感谢任何帮助!

您正在查找 rowspan 参数。

ListBox1 = Listbox(TopFrame)
ListBox1.grid(row=2,column=2, rowspan=7)

它也应该在 row=2 中,因为该列中的 row=1 已经包含 ClearButton