Python---PyQt5简单使用

PyQt5是一个Python库,它为开发图形用户界面(GUI)应用程序提供了丰富的工具和组件。下面是一个简单的例子来说明如何使用PyQt5来创建一个简单的窗口应用程序:

客户端页面

import sys
import requests
from PyQt5.QtWidgets import (QApplication, QWidget, QVBoxLayout, QHBoxLayout, QGridLayout,
                             QLabel, QLineEdit, QPushButton, QRadioButton, QCheckBox,
                             QComboBox, QSlider, QProgressBar, QMessageBox, QTextEdit)
from PyQt5.QtCore import Qt


class AppDemo(QWidget):
    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):
        gridLayout = QGridLayout()

        # 创建标签和输入框(用于姓名)
        nameLabel = QLabel("Name:")
        self.nameInput = QLineEdit()
        gridLayout.addWidget(nameLabel, 0, 0)
        gridLayout.addWidget(self.nameInput, 0, 1)

        # 创建一个 QTextEdit 对象用于富文本编辑和显示
        infoLabel = QLabel("Info:")
        self.textEdit = QTextEdit()
        self.textEdit.setAcceptRichText(True)
        gridLayout.addWidget(infoLabel, 1, 0)
        gridLayout.addWidget(self.textEdit, 1, 1)

        # 创建一个 QPushButton 对象用于获取 QTextEdit 中的内容
        self.getRichTextButton = QPushButton("Get Rich Text", self)
        self.getRichTextButton.clicked.connect(self.getRichText)
        gridLayout.addWidget(self.getRichTextButton, 2, 0)

        # 创建一个 QPushButton 对象用于设置 QTextEdit 的富文本内容
        self.setRichTextButton = QPushButton("Set Rich Text", self)
        self.setRichTextButton.clicked.connect(self.setRichText)
        gridLayout.addWidget(self.setRichTextButton, 2, 1)

        # 创建单选按钮
        radio1 = QRadioButton("Option 1")
        radio2 = QRadioButton("Option 2")
        radio2.setChecked(True)

        # 创建复选框
        checkBox = QCheckBox("I agree to something")
        checkBox.setChecked(True)

        # 创建下拉列表(组合框)
        comboBox = QComboBox()
        comboBox.addItem("Option A")
        comboBox.addItem("Option B")
        comboBox.addItem("Option C")

        # 创建滑动条
        slider = QSlider(Qt.Horizontal)
        slider.setMinimum(0)
        slider.setMaximum(100)
        slider.setValue(50)

        # 创建进度条
        progressBar = QProgressBar()
        progressBar.setValue(75)

        # 创建按钮
        getButton = QPushButton("Get Info")
        postButton = QPushButton("Submit Data")

        # 按钮点击信号连接至相应的槽函数
        getButton.clicked.connect(self.getInfo)
        postButton.clicked.connect(self.submitData)

        # 添加组件到布局
        gridLayout.addWidget(radio1, 3, 0)
        gridLayout.addWidget(radio2, 3, 1)
        gridLayout.addWidget(checkBox, 4, 0, 1, 2)
        gridLayout.addWidget(comboBox, 5, 0, 1, 2)
        gridLayout.addWidget(slider, 6, 0, 1, 2)
        gridLayout.addWidget(progressBar, 7, 0, 1, 2)

        # 创建按钮布局并添加按钮
        buttonLayout = QHBoxLayout()
        buttonLayout.addWidget(getButton)
        buttonLayout.addWidget(postButton)
        gridLayout.addLayout(buttonLayout, 8, 0, 1, 2)

        self.setLayout(gridLayout)

    def getInfo(self):
        response = requests.get('http://localhost:5000/get_info')
        info = response.json()
        QMessageBox.information(self, "Info", f"Name: {info['name']}, Version: {info['version']}")

    def submitData(self):
        name = self.nameInput.text()
        age = self.textEdit.toHtml()
        response = requests.post('http://localhost:5000/submit_data', json={'name': name, 'age': age})
        result = response.json()
        QMessageBox.information(self, "Response", f"Status: {result['status']}, Message: {result['message']}")

    def getRichText(self):
        # 获取 QTextEdit 中的富文本内容
        rich_text = self.textEdit.toHtml()
        print(rich_text)  # 打印输出,你也可以在这里进行其他操作

    def setRichText(self):
        # 在 QTextEdit 中设置富文本内容
        example_html = """
        

Welcome

This is an example of Rich Text in QTextEdit.

Here is a list:

  • Item One
  • Item Two
  • Item Three

This is a blue text.

""" self.textEdit.setHtml(example_html) # 程序入口 if __name__ == '__main__': app = QApplication(sys.argv) ex = AppDemo() ex.show() sys.exit(app.exec_())

服务端服务

import json

from flask import Flask, request, jsonify

app = Flask(__name__)


# GET 接口
@app.route('/get_info', methods=['GET'])
def get_info():
    # 假设这里返回一些信息
    data = {
        "name": "Flask",
        "version": "1.1.2",
        "messages": "success"
    }
    return jsonify(data)


# POST 接口
@app.route('/submit_data', methods=['POST'])
def submit_data():
    # 从请求的form中获取数据
    data = json.loads(request.data)
    print(data)
    # 假设这里会处理这些数据
    # ...

    return jsonify({
        "status": "success",
        "message": "success"
    })


if __name__ == '__main__':
    app.run(debug=True)

你可能感兴趣的:(python,qt,开发语言)