0

PyGTK および GTK Builder ウィンドウに問題があります。これが私のコードの簡略版です。

class GUI:
def __init__(self,parent):
    builder_file = "./ui/window.builder"
    self.builder = gtk.Builder()
    self.builder.add_from_file(builder_file)

    self.window = self.builder.get_object('main')
    self.builder.connect_signals( self )
    self.populate_window()
    self.window.show()

def populate_window(self):
    hbox = self.builder.get_object('hbox')
    hbox.pack_start( somewidgets )

def on_destroy(self):
    self.window.destroy()

gtk ビルダー ファイルには、水平方向のパッキング ボックスと破棄へのシグナルを備えたトップレベル ウィンドウが含まれているだけです。これは機能しているように見え、ウィンドウは正常に作成され、取り込まれますが、他のウィジェットで取り込まれたウィンドウを破棄しようとすると、python segfaults が発生します。

これは、ビルダーファイルにない新しいウィジェットをパックする際の問題であると考えているため、pygtk はそれらを破棄する方法を知りませんが、よくわかりません。

助けてくれてありがとう。

4

2 に答える 2

1

を使用しgtk.main_quit()ます。

def on_destroy(self):
    gtk.main_quit()
于 2010-01-23T18:42:42.333 に答える
0

ウィンドウがまだ破棄されているときに「破棄」ハンドラーが呼び出されるため、このコードフラグメントは次のとおりです。

def on_destroy(self):
    self.window.destroy()

無限再帰呼び出しを生成します。言い換えれば、あなたはまだ破壊されている何かを破壊しています。

これは GtkBuilder や手書きのウィジェットとは関係ありませんが、GtkWindow::destroy に何かを接続する必要がある理由がわからないので、何かが足りないのではないかと思います。

于 2010-01-10T22:11:38.807 に答える