首页 > 解决方案 > 使用 Tkinter() 的按钮大小问题:python

问题描述

我在以下 Tkinter 表单中遇到一些按钮比其他按钮大的问题?请参阅有关如何格式化按钮和附加图像的代码:[我的表单][1]

from tkinter import *
def raise_frame(frame):
    frame.tkraise()
window = Tk()
window.title('Title')
window.configure(background = 'black')
#home page
Home = Frame(window)
Home.grid(row=0,column=0,sticky = 'news')
Label(Home, text = "Category",fg='light green',bg = 'black',font = 'none 12 bold').grid(row=0,column=0,columnspan = 5,sticky = 'nesw')

#A-Z buttons
_fg = 'light green'
_font = 'none 12 bold'
_sticky = 'news'

Button(window, text = 'A',bg = _fg,font = _font) .grid(row=1,column=0, columnspan = 1, sticky = _sticky)
Button(window, text = 'B',bg = _fg,font = _font) .grid(row=1,column=1, columnspan = 1, sticky = _sticky)
Button(window, text = 'C',bg = _fg,font = _font) .grid(row=1,column=2, columnspan = 1, sticky = _sticky)
Button(window, text = 'D',bg = _fg,font = _font) .grid(row=1,column=3, columnspan = 1, sticky = _sticky)
Button(window, text = 'E',bg = _fg,font = _font) .grid(row=1,column=4, columnspan = 1, sticky = _sticky)
Button(window, text = 'F',bg = _fg,font = _font) .grid(row=1,column=5, columnspan = 1, sticky = _sticky)

Button(window, text = 'G',bg = _fg,font = _font) .grid(row=2,column=0, columnspan = 1, sticky = _sticky)
Button(window, text = 'H',bg = _fg,font = _font) .grid(row=2,column=1, columnspan = 1, sticky = _sticky)
Button(window, text = 'I',bg = _fg,font = _font) .grid(row=2,column=2, columnspan = 1, sticky = _sticky)
Button(window, text = 'J',bg = _fg,font = _font) .grid(row=2,column=3, columnspan = 1, sticky = _sticky)
Button(window, text = 'K',bg = _fg,font = _font) .grid(row=2,column=4, columnspan = 1, sticky = _sticky)
Button(window, text = 'L',bg = _fg,font = _font) .grid(row=2,column=5, columnspan = 1, sticky = _sticky)

raise_frame(Home)
window.mainloop()

标签: pythonbuttontkinter

解决方案


您的第一列较大的原因是您很可能在 position 上添加了一个类别标签row =0, col = 0。这使得第一列中的所有按钮都使用category单词的大小。(这未在您的示例代码中显示,但在图像中)。您需要做的是更改columnspan类别以使用所有可用的列(例如columnspan = 6)。这样,A、G、M、S、Y 按钮的宽度将只有它们需要的宽度。请尝试向您发布完整的代码/图像快照

类别和按钮必须全部添加到同一个父框架中才能正常工作

固定代码:

from tkinter import *
def raise_frame(frame):
    frame.tkraise()
window = Tk()
window.title('Title')
window.configure(background = 'black')
#home page
Home = Frame(window)
Home.grid(row=0,column=0,sticky = 'news')

l = Label(Home, text = "Category",fg='light green',bg = 'black',font = 'none 12 bold')
l.grid(row=0,column=0,columnspan = 6,sticky = 'nesw')

#A-Z buttons
_fg = 'light green'
_font = 'none 12 bold'
_sticky = 'news'

Button(Home, text = 'A',bg = _fg,font = _font) .grid(row=1,column=0, columnspan = 1, sticky = _sticky)
Button(Home, text = 'A',bg = _fg,font = _font) .grid(row=1,column=0, columnspan = 1, sticky = _sticky)
Button(Home, text = 'A',bg = _fg,font = _font) .grid(row=1,column=0, columnspan = 1, sticky = _sticky)
Button(Home, text = 'B',bg = _fg,font = _font) .grid(row=1,column=1, columnspan = 1, sticky = _sticky)
Button(Home, text = 'C',bg = _fg,font = _font) .grid(row=1,column=2, columnspan = 1, sticky = _sticky)
Button(Home, text = 'D',bg = _fg,font = _font) .grid(row=1,column=3, columnspan = 1, sticky = _sticky)
Button(Home, text = 'E',bg = _fg,font = _font) .grid(row=1,column=4, columnspan = 1, sticky = _sticky)
Button(Home, text = 'F',bg = _fg,font = _font) .grid(row=1,column=5, columnspan = 1, sticky = _sticky)

Button(Home, text = 'G',bg = _fg,font = _font) .grid(row=2,column=0, columnspan = 1, sticky = _sticky)
Button(Home, text = 'H',bg = _fg,font = _font) .grid(row=2,column=1, columnspan = 1, sticky = _sticky)
Button(Home, text = 'I',bg = _fg,font = _font) .grid(row=2,column=2, columnspan = 1, sticky = _sticky)
Button(Home, text = 'J',bg = _fg,font = _font) .grid(row=2,column=3, columnspan = 1, sticky = _sticky)
Button(Home, text = 'K',bg = _fg,font = _font) .grid(row=2,column=4, columnspan = 1, sticky = _sticky)
Button(Home, text = 'L',bg = _fg,font = _font) .grid(row=2,column=5, columnspan = 1, sticky = _sticky)

raise_frame(Home)
window.mainloop()

推荐阅读