如何缩小TkInter中文本按钮的边距?
问题:Tkinter按钮内边距过大,导致与同字体标签尺寸不一致
底部红色按钮(文本为00:00:00)与顶部标签(文本为00:00:00)已设置相同字体,但按钮自带的内边距更大,导致两者尺寸不一致。尝试调整height和width参数无效,需要缩小按钮内边距的方法。
相关代码:
def __init__(self, sets_num): self.screen = Frame(root) self.background = BG_START_WORK bg_canvas = Canvas(self.screen, width=460, height=990) bg_canvas.create_image(230, 498.3, image=self.background) bg_canvas.grid(column=0, row=0, rowspan=12, columnspan=3) timer = Label(self.screen, text='00:00:00', font=FONT2, bg='#393E46', fg='#FFFFFF') timer.grid(row=0, column=0, columnspan=3, sticky=S, pady=(98, 0)) timer_to_set = Button(self.screen, text='00:00:00', background='#D65A31', activebackground="#D65A31", bd=0, fg='#F7D6D7', activeforeground='#F7D6D7', font=FONT2) timer_to_set.grid(row=1, column=0, columnspan=3, sticky=S, pady=(100, 0))
解决方案
可以通过以下几种方式缩小Tkinter按钮的内边距:
调整按钮内部边距参数:直接设置
padx和pady为更小的值(甚至0),这两个参数控制按钮文本与按钮边框之间的水平和垂直间距。修改后的按钮初始化代码:timer_to_set = Button(self.screen, text='00:00:00', background='#D65A31', activebackground="#D65A31", bd=0, fg='#F7D6D7', activeforeground='#F7D6D7', font=FONT2, padx=0, pady=0) # 添加内部边距控制参数移除高亮边框:部分系统下按钮会有默认的高亮边框,设置
highlightthickness=0可以消除这部分额外的间距:timer_to_set = Button(self.screen, text='00:00:00', background='#D65A31', activebackground="#D65A31", bd=0, fg='#F7D6D7', activeforeground='#F7D6D7', font=FONT2, padx=0, pady=0, highlightthickness=0)使用扁平化样式:设置
relief='flat'可以让按钮样式更简洁,减少不必要的边框空间占用:timer_to_set = Button(self.screen, text='00:00:00', background='#D65A31', activebackground="#D65A31", bd=0, fg='#F7D6D7', activeforeground='#F7D6D7', font=FONT2, padx=0, pady=0, highlightthickness=0, relief='flat')适配平台默认样式:Windows或macOS等系统中,Tkinter按钮可能有平台专属的默认内边距,可结合
borderwidth=0(与bd=0作用一致)或compound='center'确保文本居中且不额外占用空间。
内容的提问来源于stack exchange,提问作者Mat
相关产品推荐
相关产品推荐

