私はこの質問を読みましたが、その答えは私にはうまくいきません。したがって、これは重複していません。
この問題は、私が持っているプロジェクトで発生しています。このプロジェクトでは、基本的にGUIモジュールとメインモジュールを分離しています。メインモジュールからGUIを初期化し、ステータスアイコンを作成します(つまり、アイコンとタイトルを設定します)が、私の努力にもかかわらず、そのラベルは常にpythonスクリプトの名前を読み取ります。
プロジェクトの欠陥のあるコードは、次のようなものです。
import gtk
class Main:
def __init__(self):
self.statusicon = gtk.StatusIcon()
self.statusicon.set_from_icon_name('call-end-symbolic')
self.statusicon.set_title('Title reads')
self.cb = gtk.combo_box_new_text() # Faulty line
gtk.main()
if __name__ == '__main__':
instance = Main()
ばかげているように思われるかもしれませんが、「誤った行」を削除することで、コードは完全に機能します。つまり、タイトルが設定されます。ただし、その行を削除しないと、タイトルは設定されず、スクリプト名はタイトルのままになります。
PyGTKのドキュメントを読みましたが、障害のある行で呼び出されたgtkメソッドは非推奨であるgtk.ComboBoxText()
と書かれています。代わりに使用する必要があります。ただし、モジュールgtk.ComboBoxText
内が見つかりません。gtk
>>> dir(gtk.ComboBoxText)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'module' object has no attribute 'ComboBoxText'
この質問は答えよりもバグレポートが必要だと思いますが、間違っている場合は訂正してください。