レスポンスを受け取った直後に、gtkダイアログを隠すソリューションを探していました。しかし、今、それは消え、なぜ私が疑問に思って、私は入力フィールドにクリックしない場合にのみ:私はちょうど「OK」ダイアログが消え、4秒後に情報が印刷されたキーを押すとなぜエントリにフォーカスがないときにgtk.Dialogが直接消える
import gtk, time
def get_info():
entry = gtk.Entry()
entry.set_text("Hello")
dialog = gtk.Dialog(title = "Title",
parent = None,
flags = gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT,
buttons = (gtk.STOCK_CANCEL, gtk.RESPONSE_REJECT,
gtk.STOCK_OK, gtk.RESPONSE_ACCEPT))
dialog.vbox.pack_start(entry)
dialog.show_all()
response = dialog.run()
if response == gtk.RESPONSE_ACCEPT:
info = entry.get_text().strip()
dialog.destroy()
return info
else:
exit()
info = get_info()
time.sleep(4)
print info
。 入力欄をクリックして「OK」を押すと、プログラムが終了するまでダイアログが消えません。 これはなぜそうですか?
編集:
同じ問題私はメインループでこれを行う場合:
#!/usr/bin/env python
# -*- coding: utf8 -*-
import gtk, time
class EntryTest:
def get_info(self):
entry = gtk.Entry()
entry.set_text("Hello")
dialog = gtk.Dialog(title = "Title",
parent = None,
flags = gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT,
buttons = (gtk.STOCK_CANCEL, gtk.RESPONSE_REJECT,
gtk.STOCK_OK, gtk.RESPONSE_ACCEPT))
dialog.vbox.pack_start(entry)
dialog.show_all()
response = dialog.run()
if response == gtk.RESPONSE_ACCEPT:
info = entry.get_text().strip()
dialog.destroy()
return info
else:
exit()
def main(self):
gtk.main()
if __name__ == "__main__":
base = EntryTest()
info = base.get_info()
time.sleep(4)
print info
興味深いもの:ボックスをクリックしてもテキストが強調表示されていれば、すぐにダイアログが*消えてしまいます...私は好奇心で死ぬでしょう。 – zondo