Python:Entry Window有时不会死

时间:2015-03-01 20:07:29

标签: python gtk

我有一个奇怪的间歇性问题,弹出对话框要求用户输入一个URL然后按回车键。大约一半的时间,用户按Enter键没有响应。对于相同的输入数据,它可以连续发生两次,然后使用相同的输入第三次工作。重新启动应用程序并没有真正改变这种行为。我试图使用断点和使用PyCharm的手表来调试它,但我无法让它正确地进入函数。

管理用户输入的两个功能如下:

def on_click_pic(self, button, null):
    self.url_win = Gtk.Window()
    self.url_win.set_default_size(500,20)
    self.url_win.set_border_width(10)
    self.url_win.set_title("Enter a URL for the player photo")
    self.url_win.add(self.url_entry)
    self.url_win.show_all()

def on_url_enter(self, event):
    search = self.url_entry.get_text()
    self.url_win.destroy()
    print "getting image: %s " % search
    self.get_image(search, self.e_image)
    self.e_pic = search
    print "e_pic set to %s" % search

当用户点击固定到事件框的GTKImage时,会触发第一个功能。这部分总能奏效。第二个是通过输入框的连接激活的,该输入框在主要由

调用
self.url_entry.connect("activate", self.on_url_enter)

好像这个连接函数只调用了大约一半的时间,因为on_url_enter似乎没有剩下的时间运行。我已经尝试检查我的步骤,看看输入框是否失去了焦点但是没有任何模式。还有什么我应该寻找的,或者是否有更可靠的方法对此进行编码,可能是通过制作输入框的模态类?

1 个答案:

答案 0 :(得分:0)

问题是您在__init__方法中定义了self.url_entry = Gtk.Entry()。这导致了您描述的行为。你可以使用:

def on_click_pic(self, button, event):
    self.url_win = Gtk.Window()
    self.url_win.set_default_size(500,20)
    self.url_win.set_border_width(10)
    self.url_win.set_title("Enter a URL for the player photo")
    url_entry = Gtk.Entry()  # define your GtkEntry here
    url_entry.connect('activate', self.on_url_enter)
    self.url_win.add(url_entry)
    self.url_win.show_all()

def on_url_enter(self, url_entry):
    search = url_entry.get_text()
    self.url_win.destroy()
    print "getting image: %s " % search
    self.get_image(search, self.e_image)
    self.e_pic = search
    print "e_pic set to %s" % search