将字体添加到整行时,Tkinter 按钮会更改大小

Tkinter buttons change size when font is added to a whole row

我正在 python 中制作井字游戏,现在我正在使用 Tkinter 设计 GUI。问题是,当我在一行中添加 3 个 X 或 O 时,按钮的高度会缩小。我玩过 (i)padx 和 (i)pady 并更改字体大小,但我所做的一切都没有解决问题。有人知道如何解决这个问题吗?

 from tkinter import *

 win = Tk()
 win.configure(bg='light blue')
 win.geometry('430x560')
 win.title('TicTacToe')
 win.resizable(False, False)

 lblTitle = Label(win, text='Tic-Tac-Toe', font="Verdana 25 bold", fg='thistle4', bg='azure2',
             highlightthickness=2, highlightbackground='thistle3')
 lblTitle.pack(ipadx=20, ipady=5, padx=50, pady=10)

 p1_turn = False


 def click(ind):
     if p1_turn:
         btnTTT[ind].config(text="X", font='Verdana 45 bold')

     else:
        btnTTT[ind].config(text="O", font='Verdana 45 bold')


 tttFrame = Frame(win, bg='azure2', highlightthickness=2, highlightbackground='thistle3')
 tttFrame.pack()
 btnTTT = list()

 i = 0
 for row in range(3):
     for col in range(3):
         btnTTT.append(Button(tttFrame, text="", bg='cadet blue', height=1, width=1,
                              fg='thistle', font="Verdana 50", relief='groove',
                              command=lambda c=i: click(c)))
         btnTTT[i].grid(row=row, column=col, sticky="nesw", padx=15, pady=10, ipadx=15, ipady=15)
         i = i + 1

 mainFrame = Frame(win, bg='azure2', highlightthickness=2, highlightbackground='thistle3')
 mainFrame.pack(pady=10)
 scoreFrame = Frame(mainFrame, bg='azure2')
 scoreFrame.grid(row=0, column=0, pady=10)
 scoreboard = LabelFrame(scoreFrame, bg='azure2', fg='thistle4', text='Score', font='Verdana 15 bold', labelanchor='nw')
 scoreboard.pack(padx=15)

 lblPX = Label(scoreboard, bg='thistle', text="Player X:")
 lblPX.grid(row=0, column=0, pady=5, padx=5)
 lblPO = Label(scoreboard, bg='thistle', text="Player O:")
 lblPO.grid(row=1, column=0, pady=5, padx=5)
 lblPXScore = Label(scoreboard, bg='white', text='                                         ', relief='sunken')
 lblPXScore.grid(row=0, column=1, padx=5)
 lblPOScore = Label(scoreboard, bg='white', text='                                         ', relief='sunken')
 lblPOScore.grid(row=1, column=1, padx=5)

 butFrame = Frame(mainFrame, bg='azure2')
 butFrame.grid(row=0, column=1)
 btnReset = Button(butFrame, text="Reset", font='Verdana 15', fg='thistle')
 btnReset.grid(row=0, column=0, padx=15, pady=5, ipady=4, ipadx=3)
 btnExit = Button(butFrame, text='Exit', font='Verdana 15', fg='thistle')
 btnExit.grid(row=1, column=0, padx=15, pady=5, ipady=3, ipadx=9)

 win.mainloop()

您似乎遇到了格式问题,文本更改直接改变了按钮的大小...

Verdana 45 bold

需要匹配

Verdana 50"

注意一个是 50 号而不是粗体,而另一个是 45 号是粗体吗?如果您将顶行更改为 Verdana 50 并删除“粗体”,这将直接解决您的问题。

对我来说,第 18、19 行的问题需要匹配第 32 行。