可能性のある複製:
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が多すぎます。
同じ問題に遭遇し、正しい構文がif response == gtk.RESPONSE_OK
ではないことがわかりました。 if response == Gtk.ResponseType.OK
である必要があります。これは私の問題を解決し、それがあなたの問題も解決することを願っています。リファレンス: https://bugs.launchpad.net/ubuntu/+source/quickly/+bug/929572
Gtkとpygtkの両方をインポートすることはできません。相互に競合するためです。