2017-07-25 35 views
1

我是新的使用空地,但我只做了小例子,我從來沒有嘗試過使用CheckButtons,並希望使GUI在下面的圖像:使用複選框與python和格萊德

enter image description here

想法是用ON和OFF按鈕來打印不同的信息,這取決於所選的按鈕。 我已閱讀本網站上的內容「 」和更多,但我沒有最基本的想法如何開始。 我想至少有一個這樣的例子: 如果選中了Checkbutton打印:選中此檢查按鈕並檢查它是否被選中。

要運行我知道接口,我這樣做:

from gi.repository import GTK 

builder = Gtk.Builder() 
builder.add_from_file("Port_Manager.glade") 
handlers = { 

} 

builder.connect_signals(handlers) 
window = builder.get_object("windowPort") 
window.show_all() 

Gtk.main() 

能否請您給我使用複選框請一個簡單的例子?我手動執行Glade中的GUI,而不是編程。

回答

0

首先,您正在使用Gtk.Builder connect_signals方法,該方法假定您已經通過glade聲明瞭信號處理程序方法名稱(回調方法)。

無論如何,你可以通過編程來完成。例如,有一個通用的回調知道哪個checkbutton觸發它並做一些有用的事情(比較麻煩,除非代碼是可重用的)或者爲每個checkbutton設置單獨的處理程序/回調。

讓我們以您的示例和設置處理程序爲例。該方法將是,拿到第3個複選框,附上具體的回調複選框1和2還附上一個通用的處理程序複選框1,2和3:

import gi 
gi.require_version('Gtk', '3.0') 
from gi.repository import Gtk 

def on_checkb1_toggled(button): 
    if button.get_active(): 
     state = "Active" 
    else: 
     state = "Inactive" 
    print "Checkbutton 1 toggled, state is " + state 

def on_checkb2_toggled(button): 
    if button.get_active(): 
     state = "Active" 
    else: 
     state = "Inactive" 
    print "Checkbutton 2 toggled, state is " + state 

def on_checkbutton_toggled(button, name): 
    if button.get_active(): 
     state = "Active" 
    else: 
     state = "Inactive" 
    print "Common handler: Checkbutton " + name + " toggled, state is " + state 

builder = Gtk.Builder() 
builder.add_from_file("Port_Manager.glade") 
handlers = { 

} 

builder.connect_signals(handlers) 
window = builder.get_object("windowPort") 

## Added code 

checkb1 = builder.get_object("checkbutton1") 
checkb2 = builder.get_object("checkbutton2") 
checkb3 = builder.get_object("checkbutton3") 
# ... 

checkb1.connect ("toggled", on_checkb1_toggled) 
checkb2.connect ("toggled", on_checkb2_toggled) 

checkb1.connect ("toggled", on_checkbutton_toggled, "1") 
checkb2.connect ("toggled", on_checkbutton_toggled, "2") 
checkb3.connect ("toggled", on_checkbutton_toggled, "3") 

window.connect("destroy", Gtk.main_quit) 

## End added code 

window.show_all() 

Gtk.main() 

運行代碼,我們得到的控制檯輸出(舉例):

$ python checkbuttons.py 
Checkbutton 1 toggled, state is Active 
Common handler: Checkbutton 1 toggled, state is Active 
Checkbutton 2 toggled, state is Active 
Common handler: Checkbutton 2 toggled, state is Active 
Common handler: Checkbutton 3 toggled, state is Active 
Common handler: Checkbutton 3 toggled, state is Inactive 
Common handler: Checkbutton 3 toggled, state is Active 

正如你所看到的,常用的方法(on_checkbox_toggled)將被觸發複選框1,2和3,我們可以通過名稱來識別它們。複選框1和2也會有一個具體的獨立處理程序(分別爲on_checkb1_toggledon_checkb2_toggled)。

您可以選擇最適合的方法。我還建議您檢查Python Gtk 3 Tutorial,其中有可以嘗試的示例。

祝你好運。

+0

謝謝你們,真的有幫助,如果可以的話,告訴我更多的事情,當點擊按鈕時,我可以改變按鈕的顏色嗎? –

+0

@RicardoAlves是的,你可以改變按鈕的顏色,但應該通過CSS完成。選中此[概述](https://developer.gnome.org/gtk3/stable/chap-css-overview.html)。 –

+0

何塞方特Im葡萄牙兩,:)。即時通訊尋找你給我的鏈接,我不知道如何連接的CSS,一個Python腳本,如果你能告訴我,我將非常感激。 對不起,並且非常感謝您的幫助。 –