o(∩_∩)o设置代理访问博客(四)o(∩_∩)o--nuitka打包的exe+qt界面设计

这篇博客介绍了如何利用Python的PyQt5库创建一个图形用户界面,用户可以在界面上输入CSDN账号ID,程序会实时显示文章的阅读量变化。通过将原有的命令行脚本ReadArticleCounts与GUI结合,实现了更友好的交互方式。此外,还详细展示了代码实现过程,包括UI设计、按钮事件绑定和进程管理。最后,博主分享了代码和打包成exe文件的方法。
摘要由CSDN通过智能技术生成

  前两天将提高阅读量的脚本使用 nuitka 打包成了exe文件。虽然可以使用命令行传递参数给程序,但是整体来说不太友好。
  趁着将python打包的兴致还在,干脆给打包的程序增加一个操作页面。

梳理一下自己的功能需求:

  1. 通过软件界面填写csdn账号id
  2. 在界面中可以看到每篇文章的阅读量变化

实现步骤

QT ui文件:
在这里插入图片描述 1. QLabel 提示信息:作者ID
2. QLineEdit csdn账号输入组件
3. QPushButton 确定按钮
4. QTextBrowser 显示文章当前阅读数量
5. 将.ui文件转换为python对象python.exe -m PyQt5.uic.pyuic XXX.ui -o XXX.py

QT对象调用及使用:

  1. 通过 QLineEdit 获取界面参数
    uid = self.lineEdit.text()

  2. 完成原 ReadArticleCounts 脚本的方法调用

    def start_script(self):
         uid = self.lineEdit.text()
    
         # 获取进程的pid
         self.pid = os.getpid()
    
         from ReadArticleCounts import main as readAC
         readAC(uid)
    
  3. 实现 button 按钮点击操作和对应函数的关联
    self.pushButton.clicked.connect(self.start_script)

  4. 重写关闭方法

     def closeEvent(self, event):
          """Shuts down application on close."""
          QMessageBox.about(self, '退出确认', '结束程序的运行')
          kill(self.pid)
          super().closeEvent(event)
    
  5. qt对象的调用完整代码:

    
    import os
    import sys
    
    from PyQt5.QtCore import QObject
    from PyQt5.QtCore import pyqtSignal
    from PyQt5.QtGui import QTextCursor
    from PyQt5.QtWidgets import QApplication
    from PyQt5.QtWidgets import QMainWindow
    from PyQt5.QtWidgets import QMessageBox
    
    from hello import Ui_hello
    
    
    class myForm(QMainWindow, Ui_hello):
       def __init__(self):
           super(myForm, self).__init__()
           self.setupUi(self)
           self.pushButton.clicked.connect(self.start_script)
    
           # 获取终端输出流数据.
           sys.stdout = Stream(newText=self.updateText)
    
       def updateText(self, text):
           """将终端输出转到程序界面"""
           cursor = self.textEdit.textCursor()
           cursor.movePosition(QTextCursor.End)
           cursor.insertText(text)
           self.textEdit.setTextCursor(cursor)
           self.textEdit.ensureCursorVisible()
    
       def start_script(self):
           uid = self.lineEdit.text()
    
           # 获取进程的pid
           self.pid = os.getpid()
    
           from ReadArticleCounts import main as readAC
           readAC(uid)
    
       def closeEvent(self, event):
           """Shuts down application on close."""
           # Return stdout to defaults.
           QMessageBox.about(self, '退出确认', '结束程序的运行')
           # 关闭当前进程
           kill(self.pid)
           super().closeEvent(event)
    
    
    class Stream(QObject):
       """Redirects console output to text widget."""
       newText = pyqtSignal(str)
    
       def write(self, text):
           self.newText.emit(str(text))
    
    def kill(pid):
       # Windows系统
       cmd = 'taskkill /pid ' + str(pid) + ' /f'
       try:
           os.system(cmd)
       except Exception as e:
           print(e)
    
    
    if __name__ == "__main__":
       app = QApplication(sys.argv)
       win = myForm()
       win.show()
       sys.exit(app.exec_())
    

原有代码调整:

  • 引入界面后,不再通过 cmd 交互获取参数:csdn 账号,将相关的代码删掉.

nuitka 生成exe文件:

  • nuitka --standalone --mingw64 --nofollow-imports --follow-import-to=ReadArticleCounts,hello --remove-output --plugin-enable=pyqt5 --windows-icon-from-ico=readCounts.ico --output-dir=Rs --windows-disable-console main.py

代码地址:百度网盘 提取码:vjxw

运行效果:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值