2011-11-10 58 views
0

我試圖在ruby/gtk在Ubuntu上編寫一個kiosk GUI。我非常流利地使用ruby,但是對於編寫圖形用戶界面非常新穎,而且對於Linux來說並不好。GTK-不要突出顯示按鈕上的選擇/懸停

我正在使用觸摸屏,並使用我們自己的按鈕圖像,例如,

​​

我的問題是,當按下按鈕或保持選中狀態(或懸停,雖然這是一個觸摸屏不太相關的),GTK顯示他們周圍的脂肪,方形邊框。很明顯,它將gtk的預照明/選定/活動照明應用於按鈕。我嘗試過以各種方式改變按鈕的屬性,並嘗試破解我的主題,雖然我可以修改突出顯示的外觀,但似乎無法完全擺脫它。通過我的主題改變高光的顏色很容易,但如果我刪除了我的設置,仍然存在一個我無法擺脫的默認設置。

有誰知道是否有辦法阻止它,或可能使其透明?提前致謝!

回答

0

我嘗試插手費德里科建議的繪圖,但發現解決這個問題的最直接的方法是使用事件框而不是按鈕。事件框接受點擊就像按鈕,但不給迴應選擇,懸停等在Ruby中,代碼如下:

image = Gtk::Image.new("myfile.png") 
event_box = Gtk::EventBox.new.add(image) 
event_box.visible_window = false 
event_box.signal_connect("button_press_event") do 
    puts "Clicked." 
end 

這其中大部分是完全一樣的按鈕;顯然,* visible_window *方法可以防止事件框在按鈕圖像下可見。

2

聽起來像你想要使用整個按鈕的圖像,而不是將圖像放在正常的GtkButton中 - 但仍然使用按鈕的所有常規行爲。

最簡單的方法是重寫圖形。如果您使用的是gtk2,請連接到「expose-event」信號,在那裏繪製圖形,並返回true,以便默認處理程序不會運行。如果您使用的是gtk3,請連接到「繪製」信號並執行相同操作。

+0

哦有趣 - 以前沒有深入過,但我會嘗試一下,謝謝你的建議 – tekunokurato