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)