我有带有 canvas
和 label
的 Tkinter 窗口,上面有 200x200 图片。
无论窗口大小如何,我都希望 label
位于窗口的中央。
from Tkinter import *
import Image, ImageTk, ImageDraw
imgsize = (200,200)
canvas_bg = "#000000"
root = Tk()
## root.geometry("350x350")
panel = PanedWindow()
panel.pack(expand=0)
canvas = Canvas(panel, bg=canvas_bg)
blank_source = Image.new('RGBA',imgsize, "#ffffff")
blank = ImageTk.PhotoImage(blank_source)
label = Label(canvas, image=blank)
label.configure(image = blank)
canvas.pack( expand=0)
mainloop()
有什么办法吗?
最佳答案
使用place
几何管理器。这是一个简单的例子:
from tkinter import *
wd = Tk()
wd.config(height=500, width=500)
can = Canvas(wd, bg = 'red', height=100, width=100)
can.place(relx=0.5, rely=0.5, anchor=CENTER)
基本上这些选项的工作方式如下:
使用 anchor
指定您所指的小部件的哪个点,使用其他两个指定该点的位置。举个例子,为了更好地理解它,假设你确定窗口总是 500*500 而小部件总是 100*100,那么你也可以写(这样写是愚蠢的,但只是为了为了解释):
from tkinter import *
wd = Tk()
wd.config(height=500, width=500)
can = Canvas(wd, bg = 'red', height=100, width=100)
can.place(x=200, y=200, anchor=NW)
relx
和 rely
给出相对于窗口的位置(从 0 到 1):0,4*500 = 200
x
和 y
给出绝对位置:200
anchor=NW
使偏移选项指向小部件的左上角
你可以在这里找到更多:
http://effbot.org/tkinterbook/place.htm
在这里:
关于python - 如何居中 Tkinter 小部件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18736465/