3

首先这个问题只在WIN7出现,一般在raspberry pi(Debian Linux)下。

我有两个窗口,主窗口和子窗口。主窗口有一个可以激活子窗口的按钮。子窗口有一个文本输入框,可以输入字符串。问题是当第一次激活子窗口时,文本输入框正常工作。但是当子窗口关闭并重新打开时,文本输入框似乎已禁用,无法输入任何文本,甚至 set_text("xx") 函数也无法向其中写入任何文本。

详细步骤如下:

  1. 运行py脚本

  2. 单击主窗口上的按钮以打开子窗口。我尝试了以下三种方法,似乎它们有同样的问题:

    def on_button_clicked(self, widget, data=None):
        self.child_window.present()
        #self.child_window.show()
        #self.child_window.show_all()
    
  3. 现在子窗口打开了,文本输入框可以正常工作,我可以在其中输入任何文本。

  4. 关闭子窗口。我已将删除信号绑定到子窗口。所以每次关闭子窗口时,都会执行下面的函数,隐藏当前子窗口。

    def on_WindowOfScanning_delete_event(self, widget, data=None):
        self.child_window.hide()
        return True
    
  5. 现在主窗口处于焦点位置,然后单击按钮再次激活子窗口。

    self.child_window.present()
    
  6. 现在出现子窗口,但文本输入框似乎已禁用。

任何人都可以在这个问题上帮助我吗?对此表示赞赏..

版本信息为: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()函数。

2nd,每次完成工作时销毁子窗口,并再次重新初始化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()
4

1 回答 1

0

gnucash我在和中遇到了同样的问题inkscape,我通过进入解决了这个问题Control Panel -> Locales and Languages and set format to English(US)

于 2015-01-28T02:03:01.917 回答