TypeError:方法只接受2个参数(给定3个)

2024-04-25 10:16:05 发布

您现在位置:Python中文网/ 问答频道 /正文

正在尝试使用pyudev制作一个监视usb驱动器连接的程序。代码如下:

def __init__(self):
    self.window = gtk.Window()
    self.window.set_default_size(300, 300)

    self.vbox= gtk.VBox(False, 5)
    label = gtk.Label("Please plug the device")

    context = Context()
    monitor = Monitor.from_netlink(context)
    monitor.filter_by(subsystem='block',device_type='disk')
    observer = GUDevMonitorObserver(monitor)
    observer.connect("device-added",self.device_connected)
    monitor.start()

    self.vbox.pack_start(label)
    self.window.add(self.vbox)

    self.window.show_all()

def device_connected(self, device):
    self.window.remove(self.vbox)
    label = gtk.Label('{0!r} added'.format(device))
    self.vbox.pack_end(label)
    self.window.add(self.vbox)

回溯:

^{pr2}$

请帮我纠正一下。在

我试图使用docs页上给出的代码段。{{cd2>你会注意到这个方法中的任何一个都不起作用。它返回抛出相同的错误。但我想知道它一开始是怎么工作的。不是每个类的方法都有self作为参数吗?在


Tags: selfgtkaddeddevicedefcontextwindowstart
1条回答
网友
1楼 · 发布于 2024-04-25 10:16:05

文档并没有说这些是类的方法,而是说这些是由该类发送的信号。(事实上,文档使用的名称是“deviceadded”,在Python中这甚至不是一个有效的函数名。)

函数应该是一个独立的函数,您可以将它注册为该信号的侦听器。您可以在页面顶部的代码片段中看到如何将信号连接到观察者的示例。在

相关问题 更多 >