[英]How to change the Font size of VKeyboard in tkinter without changing the size of button?
我在 web 上搜索了解決方案,我得到我們可以使用Tkinter.Font
使用代碼更改字體大小
helv36 = tkFont.Font(family='Helvetica', size=32, weight=tkFont.BOLD)
以下是我嘗試增加按鈕內文本字體大小的代碼,但隨着文本大小的增加,它也會增加按鈕大小,這是我不想要的。
from tkinter import *
from tkinter import font as tkFont
Keyboard_App = Tk()
canvas = Canvas(Keyboard_App, width=400, height=400)
canvas.place(x=0, y=0, relwidth=1, relheight=1)
background = PhotoImage(file="Images/background.png")
canvas.create_image(400,400,image=background, tags="B")
buttons = [
'1', '2', '3', '4', '5', '6', '7', '8', '9', '0', '=',
'q', 'w', 'e', 'r', 't', 'y', 'u', 'i', 'o', 'p', '<-',
'a', 's', 'd', 'f', 'g', 'h', 'j', 'k', 'l', ';', '"',
'z', 'x', 'c', 'v', 'b', 'n', 'm', ',', '.', '/', 'SHIFT',
' Space ',
]
curBut = [-1,-1]
buttonL = [[]]
canvas_textbox = canvas.create_text(0, 250, text='', anchor=NW,fill="cyan")
varRow = 1
varColumn = 0
def leftKey(event):
if curBut == [-1,-1]:
curBut[:] = [0,0]
buttonL[0][0].configure(highlightbackground='red')
elif curBut[0] == 4:
buttonL[curBut[0]][curBut[1]].configure(highlightbackground='#d9d9d9')
curBut[:] = [0,10]
buttonL[0][10].configure(highlightbackground='red')
else:
buttonL[curBut[0]][curBut[1]].configure(highlightbackground='#d9d9d9')
curBut[:] = [curBut[0], (curBut[1]-1)%11]
buttonL[curBut[0]][curBut[1]%11].configure(highlightbackground='red')
def rightKey(event):
if curBut == [-1,-1]:
curBut[:] = [0,0]
buttonL[0][0].configure(highlightbackground='red')
elif curBut[0] == 4:
buttonL[curBut[0]][curBut[1]].configure(highlightbackground='#d9d9d9')
curBut[:] = [0,0]
buttonL[0][0].configure(highlightbackground='red')
else:
buttonL[curBut[0]][curBut[1]].configure(highlightbackground='#d9d9d9')
curBut[:] = [curBut[0], (curBut[1]+1)%11]
buttonL[curBut[0]][curBut[1]%11].configure(highlightbackground='red')
def upKey(event):
if curBut == [-1,-1]:
curBut[:] = [0,0]
buttonL[0][0].configure(highlightbackground='red')
elif curBut[0] == 0:
buttonL[curBut[0]][curBut[1]].configure(highlightbackground='#d9d9d9')
curBut[:] = [(curBut[0]-1)%5, 0]
buttonL[curBut[0]][curBut[1]%11].configure(highlightbackground='red')
else:
buttonL[curBut[0]][curBut[1]].configure(highlightbackground='#d9d9d9')
curBut[:] = [(curBut[0]-1)%5, curBut[1]]
buttonL[curBut[0]][curBut[1]%11].configure(highlightbackground='red')
def downKey(event):
if curBut == [-1,-1]:
curBut[:] = [0,0]
buttonL[0][0].configure(highlightbackground='red')
elif curBut[0] == 3:
buttonL[curBut[0]][curBut[1]].configure(highlightbackground='#d9d9d9')
curBut[:] = [(curBut[0]+1)%5, 0]
buttonL[curBut[0]][curBut[1]%11].configure(highlightbackground='red')
else:
buttonL[curBut[0]][curBut[1]].configure(highlightbackground='#d9d9d9')
curBut[:] = [(curBut[0]+1)%5, curBut[1]]
buttonL[curBut[0]][curBut[1]%11].configure(highlightbackground='red')
def select(value, x, y):
if curBut != [-1,-1]:
buttonL[curBut[0]][curBut[1]].configure(highlightbackground='#d9d9d9')
curBut[:] = [x,y]
buttonL[x][y].configure(highlightbackground='red')
if value == "<-":
input = entry.get("1.0", 'end-2c')
entry.delete("1.0", END)
entry.insert("1.0", input, END)
elif value == " Space ":
entry.insert(END, ' ')
elif value == "Tab":
entry.insert(END, ' ')
else:
entry.insert(END, value)
helv36 = tkFont.Font(family='Helvetica', size=12, weight=tkFont.BOLD)
for button in buttons:
if button != " Space ":
but = Button(Keyboard_App, text=button, font=helv36, width=10, height=3, bg="#000000", fg="#ffffff", highlightthickness=4,
activebackground="#ffffff", activeforeground="#000000", relief="raised", padx=12,
pady=4, bd=4, command=lambda x=button, i=varRow-1, j=varColumn: select(x, i, j))
buttonL[varRow-1].append(but)
but.grid(row=varRow, column=varColumn)
if button == " Space ":
but = Button(Keyboard_App, text=button, font=helv36, width=60, bg="#000000", fg="#ffffff", highlightthickness=4,
activebackground="#ffffff", activeforeground="#000000", relief="raised", padx=4,
pady=4, bd=4, command=lambda x=button, i=varRow-1, j=varColumn: select(x, i, j))
buttonL[varRow-1].append(but)
but.grid(row=6, columnspan=16)
varColumn += 1
if varColumn > 10:
varColumn = 0
varRow += 1
buttonL.append([])
Keyboard_App.bind('<Left>', leftKey)
Keyboard_App.bind('<Right>', rightKey)
Keyboard_App.bind('<Up>', upKey)
Keyboard_App.bind('<Down>', downKey)
Keyboard_App.mainloop()
對於output,可以直接復制粘貼以上代碼執行。 我增加的字體大小越多,按鈕的大小就會自動增加,這會導致 UI 的外觀和感覺不好。
我哪里錯了?
您可以嘗試在but
中減小padx
和pady
。 讓我知道它是否有效
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.