Невозможно получить высоту/ширину виджета - gtkmm

Я пишу приложение, используя gtkmm.

Я написал простой класс виджета, который хочу отображать в главном окне приложения только в некоторых случаях. В противном случае я хотел бы, чтобы метка «отключена» была видна.

Чтобы добиться этого, я упаковал и виджет, и метку в один VBox, и я показываю() и скрываю() их, чтобы поменять их местами.

Однако пользовательский виджет намного больше метки, поэтому мне нужно немного изменить размер метки.

Я знаю, что могу использовать label.set_size_request(x,y), и это работает, когда я ввожу размеры вручную. Но я знаю, что виджет может немного отличаться по размеру, в зависимости от используемой темы Gtk и т. д.

Мне бы хотелось установить метку точно такого же размера *, как у виджета. Однако использование widget.get_height()* не работает — оно всегда возвращает 1.


Возможно, подсказка будет заключаться в том, что я делаю это из конструктора главного окна.


person rafalcieslak    schedule 22.03.2011    source источник


Ответы (1)


Я не много сделал в gtkmm, больше в pygtk. Но я думаю, чтобы получить значимые значения от get_width/get_height, виджет должен быть реализован, что является X-окном, говорящим для видимого. И я думаю, ваши виджеты еще не видны в конструкторе окон.

Вместо этого я бы предложил вам использовать gtk.Notebook со скрытыми вкладками. Затем gtk.Notebook будет контролировать размер как вашей метки, так и вашего пользовательского виджета.

person liori    schedule 22.03.2011