biomotor Asked:2022-06-11 16:20:37 +0000 UTC2022-06-11 16:20:37 +0000 UTC 2022-06-11 16:20:37 +0000 UTC 配置标签中文本的位置 772 面对需要配置文本在Label中的位置。也许它对某人有用... python 2 个回答 Voted Best Answer insolor 2022-06-11T16:56:59Z2022-06-11T16:56:59Z 如果您继承自tk.Frame,则无需创建自己的 pack/place/grid 方法。place在__init__. _ import tkinter as tk from tkinter import RIGHT, CENTER root = tk.Tk() class ALabel(tk.Frame): def __init__(self, parent, width=24, height=24, bg='#F2F2F2', kx=0, ky=0, *args, **kwargs): super().__init__(parent, width=width, height=height, bg=bg) self.label = tk.Label(self, bg=bg, *args, **kwargs) self.label.place(anchor=CENTER, x=width/2+kx, y=height/2+ky) close = ALabel(root, text='🗙', font=('Lucida', 12), ky=-2) close.pack(side=RIGHT) root.mainloop() biomotor 2022-06-11T16:20:49Z2022-06-11T16:20:49Z 结果: (由于 kx 和 ky 导致 PS 文本偏移) import tkinter as tk from tkinter import RIGHT, CENTER root = tk.Tk() class ALabel(): def __init__(self, parent, width=24, height=24, bg='#F2F2F2', kx=0, ky=0, *args, **kwargs): self.x = width self.y = height self.kx = kx self.ky = ky self.frame = tk.Frame(parent, width=width, height=height, bg=bg) self.label = tk.Label(self.frame, bg=bg, *args, **kwargs) def label_place(self): self.label.place(anchor=CENTER, x=self.x/2+self.kx, y=self.y/2+self.ky) def pack(self, *args, **kwargs): self.frame.pack(*args, **kwargs) self.label_place() def place(self, *args, **kwargs): self.frame.place(*args, **kwargs) self.label_place() def grid(self, *args, **kwargs): self.frame.grid(*args, **kwargs) self.label_place() close = ALabel(root, text='🗙', font=('Lucida', 12), ky=-2) close.pack(side=RIGHT) root.mainloop()
如果您继承自
tk.Frame
,则无需创建自己的 pack/place/grid 方法。place
在__init__
. _结果:
(由于 kx 和 ky 导致 PS 文本偏移)