【问题标题】:Use button to call a file.py with glade使用按钮调用带有 glade 的 file.py
【发布时间】:2017-06-26 11:37:08
【问题描述】:

我正在尝试结合 glade 的 python 脚本,创建一个按钮,在 python 中打开一个文件,这样我可以在以后进行一些更改时进行编辑。有谁能帮帮我吗?

我做的是这样的:

import gi
gi.require_version('Gtk', '3.0')
from gi.repository import Gtk
from gi.repository import GObject as gobject
import pygtk
import gtk


def show_script(button):
   dialog = gtk.FileChooserDialog("Open...", None, gtk.FILE_CHOOSER_ACTION_OPEN, (gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL, gtk.STOCK_OPEN, gtk.RESPONSE_OK))

   dialog.set_default_response(gtk.RESPONSE_OK)

   filter = gtk.FilerFilter()
   filter.set_name("All files")
   filter.add_pattern("*")
   dialog.add_filter(filter)

   response = dialog.run()
   if response == gtk.RESPONSE_OK:
      print (dialog.get_filename(), 'selected')
   elif response == gtk.RESPONSE_CANCEL:
      print  ('Closed, you didnt choose any files')
   dialog.destroy()


builder = Gtk.Builder()
builder.add_from_file("Wi_Green_Sheddule_v1.glade")
handlers = {
      "action_show_script": show_script
   }
}

builder.connect_signals(handlers)
window = builder.get_object("window")
window.show_all()

Gtk.main()

当我点击按钮时我的程序出现的错误是:

Traceback (most recent call last):
  File "/home/pi/Downloads/showShedduleWiGreen.py", line 70, in show_script
    dialog = gtk.FileChooserDialog("Open...", None, gtk.FILE_CHOOSER_ACTION_OPEN, (gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL, gtk.STOCK_OPEN, gtk.RESPONSE_OK))
  File "/usr/lib/python3/dist-packages/gi/__init__.py", line 62, in __getattr__
    raise AttributeError(_static_binding_error)
AttributeError: When using gi.repository you must not import static modules like "gobject". Please change all occurrences of "import gobject" to "from gi.repository import GObject". See: https://bugzilla.gnome.org/show_bug.cgi?id=709183

【问题讨论】:

    标签: python-3.x pygtk glade pygobject


    【解决方案1】:

    首先,您将 Python2 和 Python3 以及来自自省的模块和较旧的非自省模块混为一谈:

    from gi.repository import Gtk
    from gi.repository import GObject as gobject
    import pygtk
    import gtk
    

    您正在导入不可混合的 Gtk 和 gtk。您也没有在代码中使用 GObject,所以不要导入它。

    离开

    from gi.repository import Gtk
    

    并将代码中的所有 'gtk' 更改为 Gtk。

    然后,注意缩进 - 否则你仍然会有错误。而且我不能再测试了,因为没有包含 glade 文件......

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-06-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多