Tkinter列表框定位

时间:2017-10-23 13:31:40

标签: tkinter

我正在尝试将列表框移动到窗口中间位置,并且列表框位于屏幕中间的最顶部。

#centre listbox
lb = Listbox(my_window)

lb.insert(1, 'Fri, 13 Oct 2017')
lb.insert(2, 'Sat, 14 Oct 2017')
lb.insert(3, 'Sun, 15 Oct 2017')
lb.insert(4, 'Mon, 16 Oct 2017')
lb.insert(5, 'Tues, 17 Oct 2017')
lb.insert(6, 'Wed, 18 Oct 2017')
lb.insert(7, 'Thurs, 19 Oct 2017')
lb.insert(8, 'Latest')

lb.place(x=240, y=100)
lb.pack()

这就是我所说的和lb.place(......)价值观之前的工作方式,而且突然间它们不再存在,我很困惑为什么我无法移动它。

1 个答案:

答案 0 :(得分:0)

您在一个对象.pack().place()上使用了两个几何管理器,这应该永远不会完成。 .place()将采用一组坐标,并将小部件的左上角放置在这些坐标处。 .pack()会将窗口中的小部件一个接一个地叠放到顶部和中间。

.place()会执行以下操作:

from tkinter import *

root = Tk()

button = Button(root, text="Placeholder")

button.place(x=0, y=0)

root.mainloop()

只需将小部件放在需要的位置。

然而,

.pack()有许多“智能”属性,可用于在屏幕上移动对象。

默认情况下,.pack()会将窗口小部件放在窗口中,如下所示:

from tkinter import *

root = Tk()

button = Button(root, text="Placeholder")

button.pack()

root.mainloop()

但是使用其中一些属性我们可以通过各种方式对其进行操作:

from tkinter import *

root = Tk()

button = Button(root, text="Placeholder")

button.pack(fill="both", expand=True)

root.mainloop()

正如Bryan在下面的评论中所指出的,您可以使用.place()的相对x和y坐标,如下所示:

from tkinter import *

my_window = Tk()

lb = Listbox(my_window)

lb.insert(1, 'Fri, 13 Oct 2017')
lb.insert(2, 'Sat, 14 Oct 2017')
lb.insert(3, 'Sun, 15 Oct 2017')
lb.insert(4, 'Mon, 16 Oct 2017')
lb.insert(5, 'Tues, 17 Oct 2017')
lb.insert(6, 'Wed, 18 Oct 2017')
lb.insert(7, 'Thurs, 19 Oct 2017')
lb.insert(8, 'Latest')

lb.place(relx = 0.5, rely = 0.5, anchor="center")
相关问题