【问题标题】:How to center a Tkinter widget?如何使 Tkinter 小部件居中?
【发布时间】:2017-12-14 20:57:07
【问题描述】:

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

有什么办法吗?

【问题讨论】:

    标签: python tkinter


    【解决方案1】:

    使用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
    @ 987654331@ 使偏移选项参考小部件的左上角

    你可以在这里找到更多:

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

    在这里:

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

    【讨论】:

    • 明确一点:place 是完成任务的一种方式,而不是完成任务的唯一方式。
    • 我建议您改用pack(anchor='center'),除非您有特定原因使用place
    • @jangler 如何使用网格锚定?
    • 并排图片:framel = tk.Label(framee, bg='pink', image = None) framel.place(relx = 0.1, rely= 0.1, relwidth=0.8,relheight=0.8) sl = tk.Label(framel, bg='orange', image = self.current_img) sl.place(relx=0.5, rely=0.5, anchor=E) sr = tk.Label(framel, bg='orange', image = aa) sr.place(relx=0.5, rely=0.5, anchor=W)
    猜你喜欢
    • 1970-01-01
    • 2015-01-10
    • 2018-09-13
    • 2021-09-15
    • 1970-01-01
    • 2018-03-11
    • 1970-01-01
    • 2016-09-13
    • 1970-01-01
    相关资源
    最近更新 更多