python使用PyQt5,及QtCreator,qt-unified界面设计以及逻辑实现
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python使用PyQt5,及QtCreator,qt-unified界面设计以及逻辑实现,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含4656字,纯文字阅读大概需要7分钟。
内容图文
![python使用PyQt5,及QtCreator,qt-unified界面设计以及逻辑实现](/upload/InfoBanner/zyjiaocheng/849/e0afb63ae9cb4605ba3cf28c34eff6aa.jpg)
1.环境安装:
1.安装pyQt5 pip3 install pyQt ? 2.安装设计器 pip3 install pyQt-tools? (英文版的) 我是用的是自己Windows上安装的qt-unified软件 3.qt-unified安装,下载地址?https://www.qt.io/ ?2.qt-unified软件设计界面
新建项目—>Qt—>From
根据左边菜单栏上的控件直接拖到窗口上布局 设计如下界面:
保存文件,命令行切换到保存的.ui文件目录执行如下命令将.ui文件转化py文件
pyuic5 -o mainwindow.py mainwindow.ui
其中,-o 后的参数为输出文件的名称 -o 后第二个参数即为生成的ui文件的名称,报错请注意环境变量
这个时候运行会报错,所以还需要配置几个步骤。
- 增加几个引用
from PyQt5 import QtCore, QtGui, QtWidgets from PyQt5.QtWidgets import QFileDialog,QMessageBox import sys
- 添加主函数脚本
if __name__ == "__main__": app = QtWidgets.QApplication(sys.argv) MainWindow = QtWidgets.QMainWindow() ui = Ui_MainWindow() ui.setupUi(MainWindow) MainWindow.show() sys.exit(app.exec_())
然后成功运行,弹出界面。
这个时候,我们要把按钮和输入框的改造下,使其能够交互起来。
-
QPushButton的信号槽连接:
self.choose_file.clicked.connect(self.open_file)
,传入的是点击后执行的方法。 -
获取QLineEdit里面的文本:
self.cookie_edit.text()
。 -
将文案输出到QTextBrowser组件中显示:
self.message_show.append('爬取全部文章成功\n')
。 -
判断复选框是否选中
self.only_name.isChecked()
,返回的是true/false。
运行中我发现,每次执行的时候,QTextBrowser组件中的文案,不能像print()方法一样,一行一行的输出,每次都是要等到全部执行完后,一次性输出。这个不符合我设计QTextBrowser组件的初衷。于是我又去问了问怎么样才能让QTextBrowser组件中的文案一行一行的输出。
最终多方尝试后,解决了这个问题,就是加入这句代码QApplication.processEvents()
,可以将这句代码放入循环中,就能做到界面的实时刷新了。
个人示例代码
# -*- coding: utf-8 -*- from PyQt5 import QtCore, QtGui, QtWidgets from PyQt5.QtWidgets import QFileDialog,QMessageBox import sys class Ui_Form(object): def setupUi(self, Form): Form.setObjectName("Form") Form.resize(479, 547) self.textout = QtWidgets.QTextBrowser(Form) self.textout.setGeometry(QtCore.QRect(20, 251, 431, 271)) self.textout.setObjectName("textout") self.label = QtWidgets.QLabel(Form) self.label.setGeometry(QtCore.QRect(180, 10, 101, 31)) self.label.setObjectName("label") self.lujinuot = QtWidgets.QLabel(Form) self.lujinuot.setGeometry(QtCore.QRect(90, 60, 271, 20)) self.lujinuot.setObjectName("lujinuot") self.label_3 = QtWidgets.QLabel(Form) self.label_3.setGeometry(QtCore.QRect(20, 60, 71, 21)) self.label_3.setObjectName("label_3") self.selectfile = QtWidgets.QPushButton(Form) self.selectfile.setGeometry(QtCore.QRect(370, 60, 81, 23)) self.selectfile.setObjectName("selectfile") self.label_4 = QtWidgets.QLabel(Form) self.label_4.setGeometry(QtCore.QRect(20, 110, 54, 12)) self.label_4.setObjectName("label_4") self.incookie = QtWidgets.QLineEdit(Form) self.incookie.setGeometry(QtCore.QRect(70, 109, 381, 21)) self.incookie.setObjectName("incookie") self.startpachong = QtWidgets.QPushButton(Form) self.startpachong.setGeometry(QtCore.QRect(20, 190, 431, 41)) self.startpachong.setObjectName("startpachong") self.retranslateUi(Form) QtCore.QMetaObject.connectSlotsByName(Form) def retranslateUi(self, Form): _translate = QtCore.QCoreApplication.translate Form.setWindowTitle(_translate("Form", "爬虫程序")) self.label.setText(_translate("Form", "<html><head/><body><p><span style=\" font-size:18pt;\">程序设置</span></p></body></html>")) self.lujinuot.setText(_translate("Form", " ")) self.label_3.setText(_translate("Form", "<html><head/><body><p><span style=\" font-size:12pt;\">文件路径</span></p></body></html>")) self.selectfile.setText(_translate("Form", "选择文件")) self.label_4.setText(_translate("Form", "cookie:")) self.startpachong.setText(_translate("Form", "开始爬取")) if __name__ == "__main__": app = QtWidgets.QApplication(sys.argv) MainWindow = QtWidgets.QMainWindow() ui = Ui_Form() ui.setupUi(MainWindow) MainWindow.show() #可以通过QFileDialog.getOpenFileName打开文件目录,选择文件 #可以通过QFileDialog.getExistingDirectory选择文件目 # ui.cookie_edit.text() #获取QLineEdit里面的文本 # ui.lujinuot.setText(filename) #设置QLineEdit里面的文本 #QtWidgets.QApplication.processEvents() #界面实时刷新 #ui.selectfile.clicked.connect(selectfile) #点击事件 # ui.textout.append("点击了选择文件按钮\n") #添加内容 # ui.selectfile.isChecked() #返回按钮的状态True/False #提示框 # msg_box = QMessageBox(QMessageBox.Warning, "消息提示", "消息内容") # msg_box.show() # msg_box.exec_() def selectfile(): # msg_box = QMessageBox(QMessageBox.Warning, "消息提示", "消息内容") # msg_box.show() # msg_box.exec_() filename= QFileDialog.getExistingDirectory() ui.lujinuot.setText(filename) ui.selectfile.clicked.connect(selectfile) ui.textout.append("输入cookie点开始爬取\n") QtWidgets.QApplication.processEvents() #界面实时刷新 sys.exit(app.exec_())
内容总结
以上是互联网集市为您收集整理的python使用PyQt5,及QtCreator,qt-unified界面设计以及逻辑实现全部内容,希望文章能够帮你解决python使用PyQt5,及QtCreator,qt-unified界面设计以及逻辑实现所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。