Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python PyGTK函数只接受1个参数(给定2个)_Python_User Interface_Pygtk - Fatal编程技术网

Python PyGTK函数只接受1个参数(给定2个)

Python PyGTK函数只接受1个参数(给定2个),python,user-interface,pygtk,Python,User Interface,Pygtk,我正在尝试编写一个函数,将文本写入应用程序内的终端窗口。但是我得到了上面的错误 这是我的一些代码。这是播放midi文件的GUI。我试图在终端窗口中显示打开的文件: import pygtk pygtk.require('2.0') import gtk import signal import pango import subprocess textview = gtk.TextView() class Teacher: result = "" def __init__(s

我正在尝试编写一个函数,将文本写入应用程序内的终端窗口。但是我得到了上面的错误

这是我的一些代码。这是播放midi文件的GUI。我试图在终端窗口中显示打开的文件:

import pygtk
pygtk.require('2.0')
import gtk
import signal
import pango
import subprocess

textview = gtk.TextView()

class Teacher:

    result = ""
    def __init__(self):

        window = gtk.Window(gtk.WINDOW_TOPLEVEL)
        window.set_size_request(400, 200)
        window.set_title("The Improvisor")
        window.connect("delete_event", 
                   lambda w,e: gtk.main_quit())


        table = gtk.Table(4, 4, True)
        window.add(table)

        button1 = gtk.Button("Open")
        button1.connect("clicked", self.clicked_open_file)
        button1.show()

        button2 = gtk.Button("Play")
        button2.connect("clicked", self.clicked_play)
        button2.show()

        button3 = gtk.Button("Stop")
        button3.connect("clicked", self.clicked_stop)
        button3.show()


        fontdesc = pango.FontDescription('monospace')
        textview.modify_font(fontdesc)
        scroll = gtk.ScrolledWindow()
        scroll.add(textview)
        textview.show()


        table.attach(button1, 0, 1, 0, 1)
        table.attach(button2, 0, 1, 1, 2)
        table.attach(button3, 0, 1, 2, 3)
        table.attach(button4, 0, 4, 3, 4)
        table.attach(scroll, 1, 4, 0, 3)


        window.show_all()





    def clicked_play(self, widget):
        result = self.result

        if result == "":
            parent = None
            alert = gtk.MessageDialog(parent, gtk.DIALOG_DESTROY_WITH_PARENT, gtk.MESSAGE_INFO, 
              gtk.BUTTONS_CLOSE, "Please Select a File")
            alert.run()
            alert.destroy()


        else :

            self.proc = subprocess.Popen(["timidity", result])


    def clicked_open_file(self, widget):
        chooser = gtk.FileChooserDialog(title="Open a file",action=gtk.FILE_CHOOSER_ACTION_OPEN,
                              buttons=(gtk.STOCK_CANCEL,gtk.RESPONSE_CANCEL,gtk.STOCK_OPEN,gtk.RESPONSE_OK))
        response = chooser.run()

        self.result = chooser.get_filename()
        self.insert_text(self.result)

        chooser.destroy() 

    def clicked_stop(self, widget=None):
        if self.proc:
            self.proc.terminate()
            self.proc.wait()

    def insert_text(text):
        textview.get_buffer().insert_at_cursor(text)


    def main(self):
        signal.signal(signal.SIGTERM, self.clicked_stop)
        gtk.main()
        return 0


Teacher().main()

您的
insert\u text
方法缺少
self
属性。将其更改为:

def insert_text(self, text):
    ...

记住:Python中的
self
参数是类的当前实例,必须显式声明为方法的第一个参数。

感谢您的快速回复!