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
。
在 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
。