Событие кнопки PyGTK - PullRequest
       15

Событие кнопки PyGTK

0 голосов
/ 10 декабря 2011

Я пытаюсь подключить событие к кнопке и не могу понять, что не так с моими кодами.Ниже приведены исходные коды.

import sys
import os

importStatus = False

try:
    import pygtk
    pygtk.require('2.0')
    import gtk
    importStatus = True

except ImportError:
    print "PyGTK module does not exist. Can't launch GUI !"
    print "Please download and install GTK and PyGTK."
    importStatus = False

if importStatus:

    class gtkGUI():

        output = None

        def __init__(self):
            print "Starting GTK Interface"
            self.startGUI()

        def startGUI(self):
            print "GUI Started"
            self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)
            self.window.set_border_width(10)
            self.window.connect("destroy", self.destroy)

            ## Buttons
            self.trashbtn = gtk.Button("Trash")
            self.trashbtn.connect("clicked", self.get_trash_callback, None)

            ## Text Fields
            self.filenametf = gtk.Entry(max=0)

            ## Packing widgets into window

            # Vertical box to contain all boxes
            self.vbox = gtk.VBox(homogeneous=False, spacing=0)

            # filebox to contain file-based widgets
            self.filebox = gtk.HBox(homogeneous=False, spacing=0)
            self.filebox.pack_start(self.filenametf, expand=False, fill=False, padding=0)
            self.filebox.pack_start(self.trashbtn, expand=False, fill=False, padding=0)
            self.vbox.pack_start(self.filebox, expand=False, fill=False, padding=0)

            ## Presenting window
            self.window.add(self.vbox)
            self.window.show_all()
            gtk.main()
            return None

        def destroy(self, widget, data=None):
            return gtk.main_quit()

        def get_trash_callback(widget, event, data):
            loc = os.getenv("HOME")
            print loc + "/.local/share/Trash"
            self.filenametf.set_text(loc + "/.local/share/Trash")

Содержит только основные коды.Если вы хотите получить полные коды, сообщите мне.

Я получил ошибку:

self.filenametf.set_text(loc + "/.local/share/Trash")
NameError: global name 'self' is not defined

Я пытаюсь подключить кнопку «Корзина» таким образом, чтобычто всякий раз, когда нажимается кнопка «Корзина», путь к файлу мусорной корзины человека на основе Linux будет выбираться и отображаться в поле «Текстовое поле» или «Запись» (которое является полем filenametf).Теперь проблема, связанная с ошибкой, заключается в том, что поле «filenametf» не может быть оценено.

Как мне решить проблему?

Спасибо.

1 Ответ

0 голосов
/ 10 декабря 2011

Мне просто нужно было установить «filenametf = None» после определения класса и изменить параметры метода «get_trash_callback» с «(widget, event, data)» на «(self, widget, data = None)» иэто просто отлично работало без проблем, как я интуитивно понял.

...