2010-02-28 68 views
3

假設有問題的小部件是一個包含標籤和兩個按鈕的VBox。如何旋轉gtk小部件?

此外,假設期望的旋轉度爲90°。

如何去旋轉它?我認爲這是不可能的,但我認爲這是可能的。

但是,我不知道如何開始。我要寫一個自定義小部件嗎?我要繼承什麼?

回答

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) 
+0

嗯...這是非常有趣的。 :)我會嘗試一下,看看它是否適合我的目的。謝謝! – 2010-03-02 03:56:11

+0

好的,這個解決方案非常有趣,對於我給出的例子,它肯定(或多或少)有效。 我還是想知道,如果真(即:通過自定義窗口小部件)的旋轉是可能的(如果是的話,如何開始對場地),做不到這一點,我會標示出這是公認的答案(因爲它確實回答了我提出的問題)。編輯:其實,你是否也可以僞造一個固定容器的旋轉? – 2010-03-03 01:59:49

+1

您可以通過調整固定容器的大小來旋轉固定容器,交換所有子部件的x和y座標,並分別旋轉所有子部件 - 如果它們可以旋轉。可以旋轉的小部件幾乎侷限於標籤和圖像。 – ptomato 2010-03-03 10:58:53

1

首先,如果你的部件沒有自己的X窗口(垂直框沒有),將其放在事件盒。

其次,假設你已經在你的X服務器中啓用了X composite extension,你可以通過使用Xlib或其他類似工具手動調整窗口小部件的X窗口來實現。警告,這是一個冒險的解決方案,如果您的用戶沒有啓用合成擴展程序,則不起作用。

我看不出有什麼辦法做到這一點沒有合成的擴展......嗯,不是繪畫手工一切其他。 GTK使用開羅圖形庫來繪製小部件,理論上它足以在開羅內部設置轉換矩陣......但我認爲沒有實際可行性。