#-*- coding: utf-8 -*-
importos,sysfrom PyQt4 importQtCore, QtGuiimportctypesimporttimeimportthreadingtry:
_fromUtf8=QtCore.QString.fromUtf8exceptAttributeError:def_fromUtf8(s):returnstry:
_encoding=QtGui.QApplication.UnicodeUTF8def_translate(context, text, disambig):returnQtGui.QApplication.translate(context, text, disambig, _encoding)exceptAttributeError:def_translate(context, text, disambig):returnQtGui.QApplication.translate(context, text, disambig)classUi_Dialog(object):defsetupUi(self, Dialog):
Dialog.setObjectName(_fromUtf8("Dialog"))
Dialog.resize(397, 244)
self.groupBox_3=QtGui.QGroupBox(Dialog)
self.groupBox_3.setGeometry(QtCore.QRect(10, 20, 381, 211))
self.groupBox_3.setFocusPolicy(QtCore.Qt.WheelFocus)
self.groupBox_3.setAcceptDrops(False)
self.groupBox_3.setAutoFillBackground(True)
self.groupBox_3.setInputMethodHints(QtCore.Qt.ImhNone)
self.groupBox_3.setObjectName(_fromUtf8("groupBox_3"))
self.label_5=QtGui.QLabel(self.groupBox_3)
self.label_5.setGeometry(QtCore.QRect(10, 30, 51, 21))
self.label_5.setLineWidth(1)
self.label_5.setMidLineWidth(1)
self.label_5.setTextFormat(QtCore.Qt.AutoText)
self.label_5.setAlignment(QtCore.Qt.AlignCenter)
self.label_5.setWordWrap(True)
self.label_5.setMargin(0)
self.label_5.setObjectName(_fromUtf8("label_5"))
self.label_6=QtGui.QLabel(self.groupBox_3)
self.label_6.setGeometry(QtCore.QRect(10, 70, 51, 21))
self.label_6.setLineWidth(1)
self.label_6.setMidLineWidth(1)
self.label_6.setTextFormat(QtCore.Qt.AutoText)
self.label_6.setAlignment(QtCore.Qt.AlignCenter)
self.label_6.setWordWrap(True)
self.label_6.setMargin(0)
self.label_6.setObjectName(_fromUtf8("label_6"))
self.spinBox=QtGui.QSpinBox(self.groupBox_3)
self.spinBox.setGeometry(QtCore.QRect(80, 70, 70, 22))
self.spinBox.setMaximum(10000)
self.spinBox.setValue(60)
self.spinBox.setObjectName(_fromUtf8("spinBox"))
self.label_7=QtGui.QLabel(self.groupBox_3)
self.label_7.setGeometry(QtCore.QRect(10, 110, 51, 21))
self.label_7.setLineWidth(1)
self.label_7.setMidLineWidth(1)
self.label_7.setTextFormat(QtCore.Qt.AutoText)
self.label_7.setAlignment(QtCore.Qt.AlignCenter)
self.label_7.setWordWrap(True)
self.label_7.setMargin(0)
self.label_7.setObjectName(_fromUtf8("label_7"))
self.spinBox_2=QtGui.QSpinBox(self.groupBox_3)
self.spinBox_2.setGeometry(QtCore.QRect(80, 110, 70, 22))
self.spinBox_2.setMaximum(10000)
self.spinBox_2.setValue(2)
self.spinBox_2.setObjectName(_fromUtf8("spinBox_2"))
self.radioButton=QtGui.QRadioButton(self.groupBox_3)
self.radioButton.setGeometry(QtCore.QRect(80, 30, 89, 21))
self.radioButton.setAutoRepeat(False)
self.radioButton.setObjectName(_fromUtf8("radioButton"))
self.pushButton=QtGui.QPushButton(self.groupBox_3)
self.pushButton.setGeometry(QtCore.QRect(280, 110, 70, 21))
self.pushButton.setObjectName(_fromUtf8("pushButton"))
self.progressBar=QtGui.QProgressBar(self.groupBox_3)
self.progressBar.setGeometry(QtCore.QRect(10, 170, 361, 23))
self.progressBar.setProperty("value", 0)
self.progressBar.setObjectName(_fromUtf8("progressBar"))
#以上代码都是自动生成的,没有什么难度
#下面的代码是主要是对控件功能的实现
self.radioButton.toggled.connect(self.changeUSBstatus)
self.pushButton.clicked.connect(lambda:self.usbSwitchThreads())#self.pushButton.connect(self.pushButton, SIGNAL("clicked"),self.changeUSBstatus())#QtCore.QObject.connect(self.pushButton, QtCore.SIGNAL(_fromUtf8("clicked()")), self.pushButton.toggle)
self.retranslateUi(Dialog)
QtCore.QMetaObject.connectSlotsByName(Dialog)defretranslateUi(self, Dialog):
Dialog.setWindowTitle(_translate("Dialog", "Dialog", None))
self.groupBox_3.setTitle(_translate("Dialog", "USB通断控制", None))
self.label_5.setText(_translate("Dialog", "初始状态", None))
self.label_6.setText(_translate("Dialog", "间隔(s)", None))
self.label_7.setText(_translate("Dialog", "切换次数", None))
self.radioButton.setText(_translate("Dialog", "接通/断开", None))
self.pushButton.setText(_translate("Dialog", "点击执行", None))defchangeUSBstatus(self):ifself.radioButton.isChecked():
USBcontrol().connectUsb()else:
USBcontrol().disconnectUsb()defstopUsbSwitch(self):
self.spinBox_2.setValue(0)defexcuteUsbSwitch(self):
self.pTime=self.spinBox.value()
self.eTimes=self.spinBox_2.value()
self.progressBar.setMinimum(0)
self.progressBar.setMaximum(self.eTimes)for i inrange(self.eTimes):
time.sleep(int(self.pTime))
USBcontrol().connectUsb()
time.sleep(int(self.pTime))
USBcontrol().disconnectUsb()
self.progressBar.setValue(i+1)defusbSwitchThreads(self):
threadsList=[]
t= threading.Thread(target=self.excuteUsbSwitch,args=() )
threadsList.append(t)for t inthreadsList:
t.setDaemon(True)
t.start()classUSBcontrol:def __init__(self):
resDict={
0:"成功",1:""}
self.resDict=resDict
dllPath= os.path.abspath(os.path.dirname(__file__))
self.objdll= ctypes.windll.LoadLibrary(dllPath+r'\usbplug.dll')
self.hdl= self.objdll.USBPLUG_Open(1)defconnectUsb(self):
res= self.objdll.USBPLUG_Set(self.hdl, 1) #连接USB
print("连接 USB" +self.resDict[res])defdisconnectUsb(self):
res= self.objdll.USBPLUG_Set(self.hdl, 0) #断开USB
print("断开 USB" +self.resDict[res])def __del__(self):
self.objdll.USBPLUG_Close(self.hdl)if __name__ == "__main__":
app=QtGui.QApplication(sys.argv)
Form=QtGui.QWidget()
main=Ui_Dialog()
main.setupUi(Form)
Form.show()
sys.exit(app.exec_())