首先,这个问题只发生在WIN7中,它通常在raspberry pi(Debian Linux)下。
我有两个窗口,主窗口和子窗口。主窗口有一个可以激活子窗口的按钮。子窗口有一个可以输入字符串的文本输入框。问题是在第一次激活子窗口时,文本输入框功能正常。但是当子窗口关闭并重新打开时,文本输入框似乎被禁用,无法输入任何文本,即使set_text(“xx”)函数也无法将任何文本写入其中。
详细步骤如下:
运行py脚本
单击主窗口上的按钮以打开子窗口。我尝试过以下三种方法,似乎它们有同样的问题:
def on_button_clicked(self, widget, data=None):
self.child_window.present()
#self.child_window.show()
#self.child_window.show_all()
现在打开子窗口并且文本输入框功能正常,我可以在其中键入任何文本。
关闭子窗口。我已将删除信号绑定到子窗口。因此,每次关闭子窗口时,将执行以下函数,这将隐藏当前子窗口。
def on_WindowOfScanning_delete_event(self, widget, data=None):
self.child_window.hide()
return True
现在主窗口处于焦点位置,然后单击按钮再次激活子窗口。
self.child_window.present()
现在出现子窗口,但文本输入框似乎已禁用。
任何人都可以帮我解决这个问题吗?赞赏...
版本信息是:Python 2.7.3 GTK 2.24.2,我使用glade来管理GUI界面。
=================同一个问题有一个不同的例子:=================== ==
http://www.pygtk.org/pygtk2tutorial/sec-TextEntries.html#entryfig
此链接是pygtk的官方示例。在我的WIN7(64位)系统上运行时,自第一次打开以来无法编辑文本输入框。但是,如果您移动鼠标以激活其他窗口,然后返回此gtk窗口,则可以编辑文本输入框。我不确定这是否是pygtk的错误。
我用pygtk2.24.2-all-in-one尝试了python 2.6.6和2.7.3。
=================这个问题的解决方案:=====================
似乎没有人有这样的问题所以我发布了自己的解决方案。
1,放弃使用window.hide()函数。
第二,每次完成作业时销毁子窗口,并再次重新启动gtk.Window以调用子窗口。这是一个简单的例子:
#!/usr/bin/env python
import pygtk
pygtk.require( "2.0" )
import gtk
class PopupExample(gtk.Window):
def __init__( self ):
gtk.Window.__init__(self)
self.connect("destroy", lambda *w: gtk.main_quit())
button = gtk.Button("Popup Window")
button.connect("clicked", self.show_popup_window)
self.add(button)
def show_popup_window(self, button):
popup = gtk.Window()
popup.add(gtk.Entry())
popup.show_all()
if __name__ == "__main__":
pe = PopupExample()
pe.show_all()
gtk.main()
答案 0 :(得分:0)
我在gnucash
和inkscape
遇到了同样的问题,
我进入Control Panel -> Locales and Languages and set format to English(US)