Я пытаюсь написать калькулятор на GTK, используя сетку, и он игнорирует параметры ширины и высоты кнопок. Ниже приведена краткая версия кода:
import gi
gi.require_version('Gtk', '3.0')
from gi.repository import Gtk
class CalculatorWindow(Gtk.Window):
def __init__(self):
Gtk.Window.__init__(self, title='Calculator')
self.set_border_width(10)
grid = Gtk.Grid()
self.add(grid)
button1 = Gtk.Button.new_with_mnemonic('_1')
button1.connect('clicked', self.on_1_clicked)
grid.attach(button1, 0, 3, 1, 2)
button2 = Gtk.Button.new_with_mnemonic('_2')
button2.connect('clicked', self.on_2_clicked)
grid.attach_next_to(button2, button1, Gtk.PositionType.RIGHT, 2, 2)
button3 = Gtk.Button.new_with_mnemonic('_3')
button3.connect('clicked', self.on_3_clicked)
grid.attach(button3, 0, 1, 1, 2)
button4 = Gtk.Button.new_with_mnemonic('_4')
button4.connect('clicked', self.on_4_clicked)
grid.attach_next_to(button4, button3, Gtk.PositionType.RIGHT , 1, 2)
def on_1_clicked(self, button1):
print(1)
def on_2_clicked(self, button2):
print(2)
def on_3_clicked(self, button3):
print(3)
def on_4_clicked(self, button4):
print(4)
window = CalculatorWindow()
window.connect('destroy', Gtk.main_quit)
window.show_all()
Gtk.main()
Независимо от того, что я ввожу в качестве параметра ширины для кнопок, GTK всегда выполняет только один для каждой строки. Если я изменю ширину button1 и button2, будет настроена только button1. И даже если он подстраивается, он не делает это правильно. Регулировка ширины всегда остается неизменной, независимо от того, введу я 5 или 20.
Я написал нечто похожее прямо из GTK + 3 Tutorial (6.2.1), и это сработало. Я что-то пропустил?