为什么选择用Python QT
因为简单!
因为方便!
选择使用Python的Qt主要有以下几个原因:
- 易学易用: Python是一门简洁而高效的编程语言,具有清晰的语法结构,使得开发人员更容易理解和编写代码。Qt框架提供了Python的绑定(PyQt),使得在Python中使用Qt变得简单而直观。
- 跨平台性: Qt是一个跨平台的图形用户界面框架,支持在多个操作系统上运行,包括Windows、Linux和macOS。这使得用Python和Qt开发的应用程序可以在不同平台上无缝运行,而不需要重写大量的代码。
- 丰富的功能: Qt提供了丰富的组件和工具包,可以轻松构建各种类型的应用程序,包括桌面应用、移动应用和嵌入式应用。这使得Python开发人员能够使用Qt创建功能强大、具有良好用户体验的应用。
- 社区支持: Python和Qt都有强大的社区支持,开发者可以在社区中获取到丰富的教程、文档和解决方案。这有助于解决开发过程中的问题,并且可以从其他开发者的经验中学到更多。
- 广泛应用: Qt广泛应用于许多领域,包括科学计算、数据可视化、嵌入式系统等。通过使用Python和Qt,开发者可以利用两者的强大功能来解决各种问题,而无需切换到其他语言或框架。
如果你想开发一个Python的工具,那么使用Pyqt来做GUI界面在合适不过了.
搭建开发环境
我是ubuntu22的系统,如果你跟我一样,可以使用如下命令安装:
代码语言:shell复制sudo apt-get install libxcb-xinerama0
sudo apt-get install libqt5widgets5
pip install PyQt5
开发案例
Hello
按照惯例,先来个Hello:
代码语言:python代码运行次数:0复制import sys
from PyQt5.QtWidgets import QApplication, QWidget, QLabel
app = QApplication(sys.argv)
window = QWidget()
window.setWindowTitle('手撕代码八百里')
label = QLabel('Hello, 手撕代码八百里!', window)
label.move(50, 50)
window.setGeometry(300, 300, 300, 200)
window.show()
sys.exit(app.exec_())
运行结果如下:
按钮事件
1.需要先导入QPushButton组件
代码语言:python代码运行次数:0复制from PyQt5.QtWidgets import QPushButton
2.然后创建button,绑定我们创建好的按钮事件
代码语言:python代码运行次数:0复制def btn_click():
print("Hy Button is clicked!")
# 在当前窗口中创建一个btn按钮
button = QPushButton(window)
button.resize(200, 100)
# 按钮提示文字
button.setText("你点我呀!!!!")
button.move(100, 100)
# 绑定单击事件
button.clicked.connect(btn_click)
3.运行结果:
点击按钮:
可以看到点击后,就会看到打印的结果
使用PyQT开发一个记事本
代码语言:python代码运行次数:0复制import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QTextEdit, QAction, QFileDialog, QVBoxLayout, QWidget
class NotepadApp(QMainWindow):
def __init__(self):
super().__init__()
self.init_ui()
def init_ui(self):
# 创建文本编辑区域
self.text_edit = QTextEdit(self)
self.setCentralWidget(self.text_edit)
# 创建菜单栏
menubar = self.menuBar()
file_menu = menubar.addMenu('File')
# 添加打开、保存和退出动作
open_action = QAction('Open', self)
open_action.triggered.connect(self.open_file)
file_menu.addAction(open_action)
save_action = QAction('Save', self)
save_action.triggered.connect(self.save_file)
file_menu.addAction(save_action)
exit_action = QAction('Exit', self)
exit_action.triggered.connect(self.close)
file_menu.addAction(exit_action)
# 设置窗口属性
self.setGeometry(100, 100, 800, 600)
self.setWindowTitle('手撕代码八百里-专用记事本')
def open_file(self):
options = QFileDialog.Options()
options |= QFileDialog.ReadOnly
file_name, _ = QFileDialog.getOpenFileName(self, 'Open File', '', 'Text Files (*.txt);;All Files (*)', options=options)
if file_name:
with open(file_name, 'r') as file:
content = file.read()
self.text_edit.setPlainText(content)
def save_file(self):
options = QFileDialog.Options()
options |= QFileDialog.DontUseNativeDialog
file_name, _ = QFileDialog.getSaveFileName(self, 'Save File', '', 'Text Files (*.txt);;All Files (*)', options=options)
if file_name:
with open(file_name, 'w') as file:
file.write(self.text_edit.toPlainText())
if __name__ == '__main__':
app = QApplication(sys.argv)
notepad = NotepadApp()
notepad.show()
sys.exit(app.exec_())
运行结果:
可以保存:
可以打开文件: