将字体添加到整行时,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 行。
我正在 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 行。