2011-12-10 10 views
0

イベントをボタンに接続しようとしていて、自分のコードに何が間違っているか把握できませんでした。以下はソースコードです。PyGTKボタンイベント

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"フィールドを評価することができないということです。

解決方法を教えてください。

ありがとうございました。

答えて

0

クラスの定義後に "filenametf = None"を設定するだけで、メソッドget_trash_callbackを "(widget、event、data)"から "(self、widget、data = None)"に変更するだけでした。私は直感的に思ったように、それはもはや問題なく、うまく動きました。