Python 在窗口中添加两次标签
我正在使用pyudevI制作一个GUI程序来检测usb连接。代码如下:Python 在窗口中添加两次标签,python,gtk,pygtk,Python,Gtk,Pygtk,我正在使用pyudevI制作一个GUI程序来检测usb连接。代码如下: import gtk from pyudev import Context,Monitor from pyudev.glib import GUDevMonitorObserver import usb.core import usb.util import sys class Project: window = gtk.Window() vbox= gtk.VBox(False, 5) def
import gtk
from pyudev import Context,Monitor
from pyudev.glib import GUDevMonitorObserver
import usb.core
import usb.util
import sys
class Project:
window = gtk.Window()
vbox= gtk.VBox(False, 5)
def __init__(self):
self.window.set_default_size(300, 300)
label = gtk.Label("Please plug the device")
self.vbox.pack_start(label)
self.window.add(self.vbox)
self.window.show_all()
context = Context()
monitor = Monitor.from_netlink(context)
monitor.filter_by(subsystem='block',device_type='disk')
observer = GUDevMonitorObserver(monitor)
def device_connected(observer, device):
property_name = device.__getitem__('ID_USB_DRIVER')
label = gtk.Label('USB Driver::{0!r}'.format(property_name))
Project.vbox.pack_start(label)
Project.window.show_all()
observer.connect("device-added",device_connected)
monitor.start()
Project()
gtk.main()
您会注意到,一个新标签只打包到Project.vbox
中一次。但是,在窗口中,它会显示两次:
如何删除第二个USB驱动程序::u'USB-storage'
?尝试:(我无法测试)
您正在打包
标签
两次,因为您的信号显然会被触发两次。尝试验证实际执行信号处理程序的频率
检查设备UUID或序列号,仅当UUID/序列号未知时才添加标签。这看起来不像GTK+问题:找出为什么会获得2个设备添加信号,而不是隐藏症状。你还应该处理设备移除:你不知道是否有一些奇怪的设备被快速移除并重新添加。你只是改变了包装,这有什么帮助?
def device_connected(observer, device):
property_name = device.__getitem__('ID_USB_DRIVER')
label = gtk.Label('USB Driver::{0!r}'.format(property_name))
Project.vbox.pack_start(label,expand=False)
Project.window.show_all()