我有一个奇怪的间歇性问题,弹出对话框要求用户输入一个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似乎没有剩下的时间运行。我已经尝试检查我的步骤,看看输入框是否失去了焦点但是没有任何模式。还有什么我应该寻找的,或者是否有更可靠的方法对此进行编码,可能是通过制作输入框的模态类?
答案 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