13

我有 Tkinter 窗口,canvas上面label有 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()

有什么办法吗?

4

1 回答 1

23

使用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

于 2013-09-11T10:21:18.860 回答