首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PyGTK按钮事件

PyGTK按钮事件
EN

Stack Overflow用户
提问于 2011-12-10 14:25:20
回答 1查看 438关注 0票数 0

我正在尝试将事件连接到按钮,但找不到我的代码出了什么问题。下面是源码。

代码语言:javascript
复制
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")

这里只包含必要的代码。如果你想要真正完整的代码,请通知我。

我收到的错误是:

代码语言:javascript
复制
self.filenametf.set_text(loc + "/.local/share/Trash")
NameError: global name 'self' is not defined

我要做的就是连接" Trash“按钮,只要点击"Trash”按钮,基于Linux的回收站的文件路径就会被获取并显示在文本框或输入字段(即filenametf字段)上。根据错误,现在的问题是无法评估"filenametf“字段。

我该如何着手解决它呢?

谢谢。

EN

回答 1

Stack Overflow用户

发布于 2011-12-10 14:57:29

我只需要在定义类后设置"filenametf = None“,并将"get_trash_callback”方法的参数从"(widget,event,data)“更改为"(self,widget,data=None)”,它就可以很好地工作,而不会再有任何问题,就像我刚刚直观地指出的那样。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8454868

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档