使用 quick 的 PyGTK 打开文件

nja*_*lam 5 quickly pygtk application-development

我已经添加了监听器等,但我无法让实际的打开对话框代码工作。我认为这与 gtk 和 Gtk 之间的区别有关,但我昨天才刚开始使用 python。这是我现在的代码:

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)
Run Code Online (Sandbox Code Playgroud)

当按钮被按下时,控制台输出:

Traceback (most recent call last):
File "/home/nja/notetaker/notetaker/NotetakerWindow.py", line 61, in on_btn_open_clicked
self.open_file()
File "/home/nja/notetaker/notetaker/NotetakerWindow.py", line 41, in open_file
GTK_FILE_CHOOSER_ACTION_OPEN,
NameError: global name 'GTK_FILE_CHOOSER_ACTION_OPEN' is not defined
Run Code Online (Sandbox Code Playgroud)

此外,当GTK_FILE_CHOOSER_ACTION_OPEN被替换为“0”(我相信这int是常数指向的)时,它可以正常工作,但它会在Gtk.RESPONSE_CANCELGtk.RESPONSE_OK

小智 2

您必须更换:

  • GTK_FILE_CHOOSER_ACTION_OPENGtk.FileChooserAction.OPEN
  • Gtk.RESPONSE_CANCELGtk.ResponseType.CANCEL
  • Gtk.RESPONSE_OKGtk.ResponseType.OK

ETC。

这不是 PyGTK,而是 GObject Introspection。您必须按如下方式构建名称:Gtk.EnumTypeNameHere.VALUE

请参阅https://live.gnome.org/PyGObject/IntrospectionPorting