假设有问题的小部件是一个包含Label和两个按钮的VBox。
此外,假设所需的旋转度为90°。
如何旋转呢?我不认为默认情况下这是可能的,但我认为这是可能的。
但是,我不知道如何开始。我是否编写自定义小部件?我的子类是什么?
答案 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