web-dev-qa-db-ja.com

シンプルなメディアプレーヤーのチュートリアルに関する問題

可能性のある複製:
simple-player quick tutorialの「gtk.RESPONSE_OK」の問題に直面している

私はこのチュートリアルに従っていますが、プログラムがlineif response == gtk.RESPONSE_OKに問題があるという停止点に達しました。これは、[開く]をクリックし、次にディレクトリを選択して[OK]をクリックした後に発生します。エラーメッセージは「NameError:グローバル名 'gtk'が定義されていません」なので、調査したところ、明らかに次の2つをインポートする必要があります。

import pygtk
pygtk.require("2.0")
import gtk

これをSimpleMediaPlayerWindow.pyに追加すると、プログラムがまったく実行されず、エラーメッセージが表示されます。

/usr/lib/python2.7/dist-packages/gobject/constants.py:24: Warning: g_boxed_type_register_static: assertion `g_type_from_name (name) == 0' failed
  import gobject._gobject
/usr/lib/python2.7/dist-packages/gtk-2.0/gtk/__init__.py:40: Warning: specified class size for type `PyGtkGenericCellRenderer' is smaller than the parent type's `GtkCellRenderer' class size
  from gtk import _gtk
/usr/lib/python2.7/dist-packages/gtk-2.0/gtk/__init__.py:40: Warning: g_type_get_qdata: assertion `node != NULL' failed
  from gtk import _gtk

のインストール中に、これらすべてが適切にインストールおよび構成されていると思いました。助言がありますか?

余談ですが、チュートリアルにはいくつかのタイプミスがあり、それに従うのが少し難しいかもしれません。ウィンドウから既存のコンテナを削除すると、「子のリストに移動してlabel1を削除」と2回表示されますが、2回目は実際にはlabel2を参照しています。 「コンテナタブの下の水平ペインを検索...」は、「コンテナタブの下のペインを検索...」と表示されます(これは、更新されたバージョンのgladeで変更された可能性があります)。最後に(これまでのところ)、「on_on_openbutton_clicked関数に追加します」その関数名には、onが多すぎます。

3
linucksrox

同じ問題に遭遇し、正しい構文がif response == gtk.RESPONSE_OKではないことがわかりました。 if response == Gtk.ResponseType.OKである必要があります。これは私の問題を解決し、それがあなたの問題も解決することを願っています。リファレンス: https://bugs.launchpad.net/ubuntu/+source/quickly/+bug/929572

2
Udith Arosha

Gtkとpygtkの両方をインポートすることはできません。相互に競合するためです。

2
mhall119