2009-02-23 47 views
3

我在林間空地製作了AboutDialog箱子,但關閉按鈕不起作用。我不知道如何將此按鈕連接到單獨的函數,因爲它位於名爲dialog-action_area的小部件中。關於Dialog關閉的空地

另一個問題是,如果我使用由窗口管理器創建的關閉按鈕,我無法再打開它,因爲它已被銷燬。

我該如何改變這個以便它隱藏?

回答

5

你需要,當你收到刪除或取消信號調用控件的隱藏()方法:

response = self.wTree.get_widget("aboutdialog1").run() # or however you run it 
if response == gtk.RESPONSE_DELETE_EVENT or response == gtk.RESPONSE_CANCEL: 
    self.wTree.get_widget("aboutdialog1").hide() 

您可以找到響應類型常量in the GTK documentation

+0

它的工作,我想我有一個更好的理解這一次所有作品,如何感謝您的幫助。 – wodemoneke 2009-02-23 19:43:21

6

和任何其他對話窗口,他們需要你到

  1. 使用run方法。
  2. 利用「效應初探」信號的

首先將阻止主循環,並會盡快對話收到響應,這可能是返回,點擊任何按鈕,在行動區域或按Esc,或調用對話框的響應方法或「銷燬」窗口,最後並不意味着窗口將被銷燬,這意味着run()方法將退出並返回響應。像這樣:

response = dialog.run() 

如果您使用調試器,你會發現,主循環,直到你點擊一個按鈕或試圖關閉對話框停留在那裏。一旦你收到你的答覆,那麼你可以使用它,只要你想。

response = dialog.run() 
if response == gtk.RESPONSE_OK: 
    #do something here if the user hit the OK button 
dialog.destroy() 

第二個允許你在非阻塞的東西中使用對話框,然後你必須將你的對話框連接到「響應」信號。

def do_response(dialog, response): 
    if response == gtk.RESPONSE_OK: 
     #do something here if the user hit the OK button 
    dialog.destroy() 

dialog.connect('response', do_response) 

現在,你發現,你必須摧毀你的對話框