你如何旋转gtk小部件?

时间:2010-02-28 20:34:54

标签: gtk pygtk

假设有问题的小部件是一个包含Label和两个按钮的VBox。

此外,假设所需的旋转度为90°。

如何旋转呢?我不认为默认情况下这是可能的,但我认为这是可能的。

但是,我不知道如何开始。我是否编写自定义小部件?我的子类是什么?

3 个答案:

答案 0 :(得分:7)

你可以这样假装:

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 :(得分:1)

首先,如果您的小部件没有自己的X窗口(VBox没有),请将其放在EventBox中。

其次,假设您的X服务器已启用X composite extension,您可以通过使用Xlib或等效的手动调整窗口小部件的X窗口来实现。警告,这是一个hacky解决方案,如果您的用户没有启用合成扩展,则无法使用。

如果没有合成扩展,我没有看到任何方法做到这一点......好吧,除了手工绘制所有东西。 GTK使用Cairo图形库来绘制小部件,理论上它足以在开罗内部设置转换矩阵......但我认为没有实际可行性。

答案 2 :(得分:0)

我知道回答这个问题已经有一段时间了,但是如果您想开始使用子类化,可以使用下面的C代码来完成。这取自GTK-Demo套件。

https://github.com/GNOME/gtk/blob/gtk-3-22/demos/gtk-demo/offscreen_window.c