2017-06-26 6 views
-3

私はgladeと一緒にpythonスクリプトを試しています。私はPythonでファイルを開くボタンを作成して、後でいくつかの変更を加えたい場合に編集できます。あなたが好きなら誰でも助けてくれますか?私はボタンをクリックしたときに私のプログラムが行う誤りがあるボタンを使ってgladeでfile.pyを呼び出す

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 

答えて

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年代を変更します。

次に、インデントを処理してください。そうしないとエラーが発生します。グレードファイルは含まれていないので、もうテストできませんでした。

関連する問題