2017-06-26 1 views
-3

Ich versuche durch ein Python-Skript in Verbindung mit Glade, erstellen Sie eine Schaltfläche, die mir eine Datei in Python öffnet, damit ich bearbeiten kann, wenn ich später einige Änderungen vornehmen möchte. Kann mir bitte jemand helfen?Verwenden Sie die Taste, um eine Datei.py mit Glade

Was ich tat, war dies:

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() 

Der Fehler, der mein Programm tut, wenn ich auf die Schaltfläche klicken ist:

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 

Antwort

1

Für den Anfang, Sie vermischen Python2 und Python3 und Module von Selbstbeobachtung und älteren nicht-Selbstbeobachtung Module:

from gi.repository import Gtk 
from gi.repository import GObject as gobject 
import pygtk 
import gtk 

Sie importieren gtk und gtk, die sind nicht mischbar. Sie verwenden GObject auch nicht in Ihrem Code, also importieren Sie es nicht.

Lassen Sie nur

from gi.repository import Gtk 

und all ‚gtk die im Code Gtk ändern.

Dann, kümmern Sie sich um die Einrückung - sonst werden Sie immer noch Fehler haben. Und ich konnte nicht mehr testen, da die Lichtung nicht enthalten ist ...

Verwandte Themen