Как вы вращаете виджет GTK? - PullRequest
3 голосов
/ 28 февраля 2010

Скажем, рассматриваемый виджет - это VBox, содержащий метку и две кнопки.

Кроме того, допустим, требуемая степень поворота составляет 90 °.

Как можно вращать его? Я не думаю, что это возможно по умолчанию, но я думаю, что это возможно.

Однако я понятия не имею, с чего начать. Я пишу собственный виджет? Что я подкласс?

Ответы [ 2 ]

7 голосов
/ 01 марта 2010

Вы можете подделать это так:

label.set_angle(90)
button1.get_child().set_angle(90) # assuming it's not a stock button
button2.get_child().set_angle(90)
vbox.set_orientation(gtk.ORIENTATION_HORIZONTAL)
1 голос
/ 01 марта 2010

Во-первых, если ваш виджет не имеет своего собственного окна X (VBox не имеет), поместите его в EventBox.

Во-вторых, предполагая, что на вашем X-сервере включено X составное расширение , вы сможете сделать это вручную, настроив X-окно вашего виджета с помощью Xlib или аналогичного. Предупреждение, это хакерское решение, которое не будет работать, если у вашего пользователя не включены расширения для композитинга.

Я не вижу способа сделать это без компоновки расширений ... ну, кроме рисования всего вручную. GTK использует графическую библиотеку Cairo для рисования виджетов, и теоретически было бы достаточно установить матрицу преобразования внутри Cairo ... но я не вижу практической возможности сделать это.

...