用Python手把手教你玩QT

2023-11-30 22:59:56 浏览数 (1)

为什么选择用Python QT

因为简单!

因为方便!

选择使用Python的Qt主要有以下几个原因:

  1. 易学易用: Python是一门简洁而高效的编程语言,具有清晰的语法结构,使得开发人员更容易理解和编写代码。Qt框架提供了Python的绑定(PyQt),使得在Python中使用Qt变得简单而直观。
  2. 跨平台性: Qt是一个跨平台的图形用户界面框架,支持在多个操作系统上运行,包括Windows、Linux和macOS。这使得用Python和Qt开发的应用程序可以在不同平台上无缝运行,而不需要重写大量的代码。
  3. 丰富的功能: Qt提供了丰富的组件和工具包,可以轻松构建各种类型的应用程序,包括桌面应用、移动应用和嵌入式应用。这使得Python开发人员能够使用Qt创建功能强大、具有良好用户体验的应用。
  4. 社区支持: Python和Qt都有强大的社区支持,开发者可以在社区中获取到丰富的教程、文档和解决方案。这有助于解决开发过程中的问题,并且可以从其他开发者的经验中学到更多。
  5. 广泛应用: 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_())

运行结果:

可以保存:

可以打开文件:

0 人点赞