python Qt

最近帮朋友做了一个将文本文件按条件导出到excel里面的小程序。使用了PyQT,发现Python真是一门强大的脚本语言,开发效率极高。

首先需要引用

from PyQt4 import QtGui, uic, QtCore 
 
 


很多控件像QPushButton是从QtGui的空间中得来的,下面def __init__(self, parent=None)中定义了界面的设计及与控件相互联系的方法。


 
 
  1. class AddressBook(QtGui.QWidget):
  2. def __init__(self, parent=None):
  3. super(AddressBook, self).__init__(parent)
  4. self.out_put = QtGui.QPushButton( "&Out_put")
  5. #该button在被单击之后,调用self.out的方法
  6. self.out_put.clicked.connect(self.out)
  7. browseButton = self.createButton( "&Browse...", self.browse)
  8. nameLabel = QtGui.QLabel( "Location:")
  9. self.nameLine = QtGui.QLineEdit()
  10. addressLabel = QtGui.QLabel( "Loading:")
  11. self.addressText = QtGui.QTextEdit()
  12. self.createFilesTable()
  13. buttonLayout1 = QtGui.QVBoxLayout()
  14. buttonLayout1.addWidget(browseButton, QtCore.Qt.AlignTop)
  15. buttonLayout1.addWidget(self.out_put)
  16. buttonLayout1.addStretch()
  17. #界面的布局
  18. mainLayout = QtGui.QGridLayout()
  19. mainLayout.addWidget(nameLabel, 0, 0)
  20. mainLayout.addWidget(self.nameLine, 0, 1)
  21. mainLayout.addWidget(addressLabel, 1, 0, QtCore.Qt.AlignTop)
  22. #mainLayout.addWidget(self.addressText, 1, 1)
  23. mainLayout.addWidget(self.filesTable, 1, 1)
  24. mainLayout.addLayout(buttonLayout1, 1, 2)
  25. self.setLayout(mainLayout)
  26. self.setWindowTitle( "HD_export")


得到的效果如图所示:

然后就是定义button对应的方法。如Browse这个button对应的方法,代码如下:


 
 
  1. def browse(self):
  2. directory = QtGui.QFileDialog.getExistingDirectory(self, "Find Files",
  3. QtCore.QDir.currentPath())
  4. self.nameLine.setText(directory)
  5. self.find()
  6. def find(self):
  7. self.filesTable.setRowCount( 0)
  8. path=self.nameLine.text()
  9. self.currentDir = QtCore.QDir(path)
  10. files = self.currentDir.entryList(QtCore.QDir.Files | QtCore.QDir.NoSymLinks)
  11. self.showFiles(files)


 

这样当单击Browse这个按钮的时候,他就会调用browse这个方法了。

     Ok,这样PyQT的用法就差不多说完了。然后就是如果编译这个.py文件,让他能够生成可用的.exe.

     我在生成的时候,使用的是cx_Freeze,它的用法就一个命令FreezePython.exe,打包也很快捷:

 cx_Freeze.bat  --install-dir="/your/path/to/install" app.py      

在安装的时候他会把cx_Freeze.bat放到\Python27\Scripts的文件夹中。

真正理解这个GUI开发,还是要自己去动手做。使用PyQT可以迅速的开发出自己想要的小工具,是一个不错的方法

 

 

<think>好的,用户想要查找关于PythonQt开发的教程或者最佳实践。我之前提供的引用里提到了PySide6和Qt5的相关资料,可能需要整理一下这些信息。首先,用户需要知道Python中常用的Qt绑定库有哪些,比如PySide6和PyQt5,这两者的区别和选择可能是一个关键点。 用户可能刚开始接触Qt,所以需要明确推荐哪个库更适合新手。根据引用内容,PySide6是Qt官方支持的,而PyQt是第三方维护的。可能应该推荐PySide6,因为官方支持可能更可靠,文档也更全面。另外,引用里提到PySide6的文档虽然可用,但建议参考Qt本身的文档,因为更完整,这点需要传达给用户。 接下来,用户需要教程和最佳实践。引用中提到了创建QApplication、QWidget、布局和按钮的基本步骤,可以整理一个简单的示例代码,展示如何搭建一个基本的GUI应用。同时,需要强调PySide6的命名规范与Python的PEP8不同,比如mixedCase的使用,这可能影响代码风格,需要提醒用户注意。 另外,用户可能需要了解资源推荐,比如官方文档、书籍、社区和视频教程。引用里提到了Qt文档的重要性,所以应该建议用户结合官方文档学习。书籍方面可以推荐《使用PythonQt6创建GUI应用程序》这样的资源,以及在线教程和视频课程。 还有最佳实践部分,需要包括项目结构、信号与槽的使用、多线程处理、样式表、国际化以及调试工具。这些都是开发中常见的注意事项,能够帮助用户写出更高效、可维护的代码。 最后,生成相关问题需要考虑用户可能进一步的需求,比如库的选择、命名规范、跨平台问题、性能优化等。这些问题可以引导用户深入学习,解决实际开发中的疑惑。 总结一下,回答需要分步骤介绍库的选择、基础教程、资源推荐、最佳实践,并附上示例代码和相关问题,确保结构清晰,信息准确,同时结合之前的引用内容,突出Qt文档的重要性以及PySide6的特点。</think>### Python Qt开发教程与最佳实践 #### 一、Python Qt开发库选择 1. **PySide6**(推荐) - 由Qt官方维护的Python绑定库,支持Qt6最新特性[^1]。 - 完全开源(LGPL协议),适合商业项目。 - 命名规范与Qt C++一致(如`QWidget.setFixedSize()`),需注意与Python PEP8的差异[^1]。 2. **PyQt5** - 第三方维护的Qt5绑定库,功能成熟但需商业授权。 - 语法更接近Python风格(部分函数使用snake_case)。 #### 二、基础开发流程示例(PySide6) ```python # 安装库:pip install pyside6 from PySide6.QtWidgets import QApplication, QWidget, QVBoxLayout, QPushButton # 1. 创建应用实例 app = QApplication([]) # 2. 构建主窗口 window = QWidget() window.setWindowTitle("基础示例") layout = QVBoxLayout() # 3. 添加组件 button1 = QPushButton("点击我") button2 = QPushButton("退出") layout.addWidget(button1) layout.addWidget(button2) # 4. 绑定信号与槽 button2.clicked.connect(window.close) # 5. 显示窗口 window.setLayout(layout) window.show() app.exec() ``` ▲ 代码说明:通过信号槽机制实现交互逻辑,使用布局管理组件排列[^2]。 #### 三、核心学习资源推荐 1. **官方文档** - [Qt for Python官方文档](https://doc.qt.io/qtforpython/)(含API详解与C++示例对照) - [Qt框架通用文档](https://doc.qt.io/)(涵盖GUI设计、多线程等高级主题) 2. **书籍推荐** - 《使用PythonQt6创建GUI应用程序》(配套PySide6实战案例) - 《Python Qt GUI与数据可视化编程》 3. **社区与教程** - Real Python的[Qt开发指南](https://realpython.com/python-pyqt-gui-calculator/) - 知乎专栏《PySide6全攻略》 4. **视频课程** - Udemy课程《PySide6 Masterclass》 - B站Qt官方中文教程系列 #### 四、最佳实践指南 1. **项目结构规范** ```bash myapp/ ├── main.py # 程序入口 ├── ui/ # Qt Designer生成的.ui文件 ├── views/ # 自定义窗口类 ├── models/ # 数据模型 └── resources.qrc # 资源文件(图标、样式表等) ``` 2. **信号与槽的高效使用** - 优先使用装饰器声明自定义槽函数: ```python from PySide6.QtCore import Slot @Slot() def handle_click(): print("按钮被点击") ``` 3. **多线程处理** - 使用`QThreadPool` + `QRunnable`处理耗时操作: ```python from PySide6.QtCore import QRunnable, QThreadPool class Worker(QRunnable): def run(self): # 执行后台任务 pass QThreadPool.globalInstance().start(Worker()) ``` 4. **样式表(QSS)优化** - 统一管理样式文件: ```css /* style.qss */ QPushButton { background-color: #2ecc71; border-radius: 5px; padding: 10px; } ``` - 动态加载样式: ```python with open("style.qss", "r") as f: app.setStyleSheet(f.read()) ``` 5. **国际化支持** - 使用`tr()`标记可翻译文本: ```python button = QPushButton(self.tr("Submit")) ``` - 通过`lupdate`工具生成.ts翻译文件 6. **调试工具** - 使用`QDebug`输出日志: ```python from PySide6.QtCore import qDebug qDebug("当前数值: {}".format(value)) ``` - 启用Qt Creator的调试器插件
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值