网站正能量视频不懂我意思吧,wordpress学校主题,江苏省建设厅网站 投诉,开个送快餐网站怎么做工作中需要开发一个小工具#xff0c;简单的UI界面可以很好的提高工具的实用性#xff0c;由此开启了我的第一次GUI开发之旅#xff0c;下面将自己学习的心得记录一下#xff0c;也做为学习笔记吧#xff01;#xff01;#xff01; 参考#xff1a;http://www.qaulau.…工作中需要开发一个小工具简单的UI界面可以很好的提高工具的实用性由此开启了我的第一次GUI开发之旅下面将自己学习的心得记录一下也做为学习笔记吧 参考http://www.qaulau.com/books/PyQt4_Tutorial/index.html 一Python GUI开发之PYQT4 1首先安装PYQT4 可以在 http://qunying.jb51.net:81/201704/tools/PyQt4_py2.7_x64_jb51.rar 这里获得PyQt4的下载请注意选择正确的Python版本和Python的位数。 下载解压之后双击安装文件下一步安装即可选择好Python27的路径。 在 C:\Python27\Lib\site-packages\PyQt4 自动转换成你自己的路径下面找到 这个程序即GUI开发的工具界面。打开它你就可以拖拖拽拽实现GUI的开发了如下图 选择好窗口类型点击“创建”就可以生成空白的窗口界面你就可以在上面开发你自己的UI界面了。 2将.ui 文件转换成.py的代码文件: 编辑好ui界面后点击保存会生成一个.ui格式的文件。 在CMD下执行如下命令pyuic4 xxx.ui -o xxx.py 这样就会生成相应的Python代码文件。 3. 从你的IDE中打开Python代码对其进行功能实现即可.在这里贴出我的代码仅供参考学习 首先我做的是一个实现usb自动通断的工具界面是这样的 然后代码如下 # -*- coding: utf-8 -*-import os,sys
from PyQt4 import QtCore, QtGui
import ctypes
import time
import threadingtry:_fromUtf8 QtCore.QString.fromUtf8
except AttributeError:def _fromUtf8(s):return stry:_encoding QtGui.QApplication.UnicodeUTF8def _translate(context, text, disambig):return QtGui.QApplication.translate(context, text, disambig, _encoding)
except AttributeError:def _translate(context, text, disambig):return QtGui.QApplication.translate(context, text, disambig)class Ui_Dialog(object):def setupUi(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)def retranslateUi(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))def changeUSBstatus(self):if self.radioButton.isChecked():USBcontrol().connectUsb()else:USBcontrol().disconnectUsb()def stopUsbSwitch(self):self.spinBox_2.setValue(0)def excuteUsbSwitch(self):self.pTimeself.spinBox.value()self.eTimesself.spinBox_2.value()self.progressBar.setMinimum(0) self.progressBar.setMaximum(self.eTimes)for i in range(self.eTimes): time.sleep(int(self.pTime))USBcontrol().connectUsb()time.sleep(int(self.pTime))USBcontrol().disconnectUsb() self.progressBar.setValue(i1) def usbSwitchThreads(self):threadsList[]t threading.Thread(targetself.excuteUsbSwitch,args() )threadsList.append(t)for t in threadsList:t.setDaemon(True)t.start() class USBcontrol:def __init__(self):resDict{0:成功,1:}self.resDict resDictdllPath os.path.abspath(os.path.dirname(__file__))self.objdll ctypes.windll.LoadLibrary(dllPathr\usbplug.dll)self.hdl self.objdll.USBPLUG_Open(1)def connectUsb(self):res self.objdll.USBPLUG_Set(self.hdl, 1) #连接USBprint(连接 USB self.resDict[res])def disconnectUsb(self):res self.objdll.USBPLUG_Set(self.hdl, 0) #断开USBprint(断开 USB self.resDict[res]) def __del__(self):self.objdll.USBPLUG_Close(self.hdl)if __name__ __main__: app QtGui.QApplication(sys.argv) FormQtGui.QWidget()mainUi_Dialog()main.setupUi(Form)Form.show()sys.exit(app.exec_()) ok, 以上就是pyqt4的相关使用这里应用的比较简单更加深入的使用还需要继续学习。。。 二将.py 文件打包成.exe可执行程序 这里我用到的Pyinstaller这个模块首先需要安装pyinstaller; 安装方法推荐 使用 pip install pyinstaller(由于这个功能的实现还需要依赖一些其他的库pip比较省事) 安装完成后我们可以在如下路径找到Pyinstaller应用程序C:\Python27\Scripts\ 参考链接http://jingyan.baidu.com/article/a378c960b47034b3282830bb.html 比较直接的方法就是使用Pyinstaller应用程序调用待发布脚本 即执行pyinstaller.exe -w -F xx\xx\xxx.py -w: 直接发布的exe应用带命令行调试窗口在指令内加入-w命令可以屏蔽掉命令框调试阶段可不加-w, 最终发布时加入-w参数 -F: 这里是大写。使用-F指令可以把应用打包成一个独立的exe文件否则是一个带各种dll和依赖文件的文件夹 -p :这个指令后面可以增加pyinstaller搜索模块的路径。因为应用打包涉及的模块很多。这里可以自己添加路径。不过经过笔者测试site-packages目录下都是可以被识别的一般不需要再手动添加转载于:https://www.cnblogs.com/gaigaige/p/7593184.html