我有一个方法可以创建一个按钮数组(模拟网格)。用户可以单击按钮,并在其上显示“标记”(图像)。我遇到的问题是即使我在我的方法中设置高度和宽度,当它被调用时,按钮看起来太大了。重要的是要注意,当用户点击按钮时,它会“缩小”到我指定的大小......很奇怪。这是我的方法:
def create_grid(self, leng) :
try:
global board
board = grid.Grid(leng)
frame = tkinter.Frame(self.main_window)
buttons = []
for row_index in range(0,leng) :
row = []
for column_index in range(0,leng) :
button = tkinter.Button(frame, height=36, \
width = 36, text = " ", \
command=lambda row=row_index, \
column=column_index: \
self.button_clicked(row,column))
button.grid(row=row_index, column=column_index)
row.append(button)
buttons.append(row)
self.gomuko_buttons = buttons
return frame.grid(row=0, column=0)
except TypeError:
return
此外,按下按钮时执行的功能如下:
def button_clicked(self,row,column) :
global turns
grid.Comp = False
board.place_marker(row, column)
button = self.gomuko_buttons[row][column]
button['image'] = self.photo1
button['state'] = 'disabled'
turns = turns + 1
任何提示? :(
编辑:
由于Bryan Oakley的回应,我解决了这个问题。事实证明,图像和文本的宽度和高度的行为是不同的。我通过简单地在循环中添加空白图像来解决问题,如下所示:
button = tkinter.Button(frame, height=0, \
width = 0, text = " ", image = self.blank, \
command=lambda row=row_index, \
column=column_index: \
self.button_clicked(row,column))
谢谢!
答案 0 :(得分:1)
我的猜测是,你认为你给的按钮的宽度为36像素,但实际上它的宽度为36个字符。在你的回调中,我猜你正在给按钮一个图像,这会导致按钮缩小。
在Tkinter中,宽度选项的解释方式不同,具体取决于按钮是图像还是文本。如果它只有文本,则以“平均大小字符”(实际上是0(零)的宽度)指定宽度。如果为按钮指定图像,则宽度选项将被解释为像素。
记录此行为。例如,请参阅http://effbot.org/tkinterbook/button.htm#Tkinter.Button.config-method