2011-12-10 3 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)"으로 변경하기 만하면됩니다. 직관적으로 생각한대로 문제없이 더 이상 문제가 해결되지 않았습니다.