python - 如何居中 Tkinter 小部件?

标签 python tkinter

我有带有 canvaslabel 的 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)

relxrely 给出相对于窗口的位置(从 0 到 1):0,4*500 = 200
xy 给出绝对位置:200
anchor=NW 使偏移选项指向小部件的左上角

你可以在这里找到更多:

http://effbot.org/tkinterbook/place.htm

在这里:

http://www.tutorialspoint.com/python/tk_place.htm

关于python - 如何居中 Tkinter 小部件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18736465/

相关文章:

python - 在 TKinter 中格式化异步选项卡?

algorithm - Mandelbrot 集的平滑着色算法

python - 如何将 float 转换为十六进制

python - Python 两点中间的垂直线

python - 如何从python中的剪贴板获取文本并粘贴到utf-8中?

python - py2app/Tkinter应用程序错误: "classic environment is no longer supported"

python - 在循环中使用 lambda 自动绑定(bind)

python - 如何在 Matplotlib 中反转轴并设置极坐标图的零位置?

python - 就地快速排序实现

python - 如何创建以变量命名的 python tkinter Canvas 对象并保留此链接以重新配置该对象?