【问题标题】:Python: Entry Window sometimes will not diePython:入口窗口有时不会死
【发布时间】:2015-03-10 00:00:27
【问题描述】:

我有一个奇怪的间歇性问题,弹出对话框要求用户输入 URL 并按 Enter。大约有一半的时间,用户按 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 在剩下的时间里似乎没有运行。我尝试检查我的步骤以查看输入框是否失去焦点,但没有任何模式。还有什么我应该寻找的,或者有没有更可靠的方法来编码这个,也许是通过创建一个输入框的模式类?

【问题讨论】:

  • 你能提供一个工作最小的例子来演示这个问题吗?
  • 我会试一试的。我必须先重写所有数据库访问位,以便它在基本数据集上运行。
  • 这个问题听起来好像它应该可以在没有数据库的情况下重现。
  • 这应该可以:pastebin.com/F60uJPB7 启动时,点击名字右侧的空白区域和暂停直到将弹出输入 URL 的框。
  • 虽然这不像我想象的那么小,但我尝试了很多次,当我按下回车时,框总是消失。

标签: python gtk


【解决方案1】:

问题在于您在 __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

【讨论】:

  • 嗯,这似乎是一种享受。干杯!我仍在试图理解为什么会导致这种行为,特别是如果在按 enter 之前编辑输入文本
猜你喜欢
  • 2015-08-09
  • 2012-05-08
  • 1970-01-01
  • 1970-01-01
  • 2012-11-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多