0

openDialogという名前のGtkボタンを備えたメインウィンドウがあります。このボタンをクリックすると、別のウィンドウ (addName) がポップアップします。printHi という名前のメイン ウィンドウ ファイルにメソッド (または関数、Python での正しい名前がわからない) を書きたいと思います。addName ウィンドウが破棄されたときに、この printHi メソッドを (メイン ウィンドウ ファイルで) 実行したいと思います。

私はこのようなことを試しました:

def on_addName_destroy():
    printHi()

しかし、うまくいきません。なにか提案を?

4

1 に答える 1

1

"delete-event"の信号を利用できますgtk.Widget"destroy"の信号を利用することも可能ですgtk.Object。これは両方の信号に接続するサンプルですが、あなたの場合はいずれかの信号に接続するだけで十分です。

#!/usr/bin/env python

import gtk

def on_addName_destroy(gtkobject, data=None):
    print "This is called later after delete-event callback has been called"
    print "Indication that the reference of this object should be destroyed"
    print "============================================"

def on_addName_delete(widget, event, data=None):
    print "This is called on delete request"
    print "Propagation of this event further can be controlled by return value"
    print "--------------------------------------------"
    return False

def show_popup(widget, data=None):
    dialog = gtk.Window(gtk.WINDOW_TOPLEVEL)
    dialog.set_size_request(100, 100)
    label = gtk.Label("Hello!")
    dialog.add(label)
    dialog.connect("delete-event", on_addName_delete)
    dialog.connect("destroy", on_addName_destroy)
    dialog.show_all()

window = gtk.Window(gtk.WINDOW_TOPLEVEL)
window.set_size_request(100, 100)
button = gtk.Button("Popup")
button.connect("clicked", show_popup)
window.add(button)
window.connect("destroy", lambda x: gtk.main_quit())
window.show_all()

gtk.main()

お役に立てれば!

于 2012-06-29T09:38:17.697 に答える