Python Tkinter - Listbox绝对定位

时间:2015-04-26 21:44:51

标签: python user-interface python-3.x tkinter

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

列表框1当前已被注释,这显示了窗口的外观,一旦取消注释该行,元素的位置就会发生变化。我希望将列表框放在“明确答案”按钮下的位置,而不影响其他元素。

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()

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

1 个答案:

答案 0 :(得分:1)

您正在寻找rowspan参数。

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

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