如何在tkinter的条目中将占位符文本居中?

问题描述

代码如下:

from tkinter import *

class EntPlaceHold(Entry):
    def __init__(self,master=None,placeholder="placeholder",color='#610B21'):
        super().__init__(master)

        self.placeholder = placeholder
        self.placeholder_color = color
        self.default_fg_color = self['fg']

        self.bind("<FocusIn>",self.foc_in)
        self.bind("<FocusOut>",self.foc_out)

        self.put_placeholder()
    def put_placeholder(self):
        self.insert(0,self.placeholder)
        self['fg'] = self.placeholder_color
    def foc_in(self,*args):
        if self['fg'] == self.placeholder_color:
            self.delete('0','end')
            self['fg'] = self.default_fg_color
    def foc_out(self,*args):
        if not self.get():
            self.put_placeholder()

解决方法

您可以使用def put_placeholder(self): self.insert(0,self.placeholder) self['fg'] = self.placeholder_color self['justify'] = 'center' # center the placeholder def foc_in(self,*args): if self['fg'] == self.placeholder_color: self.delete('0','end') self['fg'] = self.default_fg_color self['justify'] = 'left' # left justify for normal input 选项将占位符居中:

String