用Python 和 PyQt5 打造你的专属学生信息系统! 附源码

在这篇博客中,我们将使用Python的PyQt5库来创建一个简单的学生信息系统。这个系统将包含一个表格来显示学生的信息,以及几个按钮来添加、删除和修改学生。

依赖库

首先,确保你已经安装了PyQt5库:

pip install PyQt5

步骤

第一步:导入必要的模块

我们需要导入一些必要的模块:

from PyQt5.QtWidgets import QApplication, QMainWindow, QTableWidget, QTableWidgetItem, QVBoxLayout, QPushButton, QWidget, QInputDialog, QLineEdit, QMessageBox
import sys

解析

  • QApplication:创建应用。
  • QMainWindow:创建主窗口。
  • QTableWidgetQTableWidgetItem:创建和管理表格。
  • QVBoxLayout:创建布局。
  • QPushButton:创建按钮。
  • QWidget:创建窗口部件。
  • QInputDialog:创建输入对话框。
  • QMessageBox:创建消息框。
第二步:创建主窗口类

我们创建一个名为StudentInfoSystem的类,这个类继承自QMainWindow

class StudentInfoSystem(QMainWindow):
    def __init__(self):
        super().__init__()

        # 创建一个表格并设置列数和行数
        self.table_widget = QTableWidget(self)
        self.table_widget.setRowCount(10)  # 更改行数为10
        self.table_widget.setColumnCount(4)

        # 设置表格的标题
        self.table_widget.setHorizontalHeaderLabels(['姓名', '年龄', '性别', '分数'])

        # 添加更多的模拟数据到表格
        students_info = [
            ['小明', '18', '男', '90'],
            ['小红', '19', '女', '95'],
            ['小强', '20', '男', '88'],
            ['小美', '18', '女', '92'],
            ['小刚', '19', '男', '85'],
            ['小花', '20', '女', '96'],
            ['小明', '18', '男', '90'],
            ['小红', '19', '女', '95'],
            ['小强', '20', '男', '88'],
            ['小美', '18', '女', '92']
        ]
        for i, student_info in enumerate(students_info):
            for j, info in enumerate(student_info):
                self.table_widget.setItem(i, j, QTableWidgetItem(info))

        # 创建一个按钮,用于添加学生
        self.add_button = QPushButton('添加学生')
        self.add_button.clicked.connect(self.add_student)

        # 创建一个按钮,用于删除学生
        self.delete_button = QPushButton('删除学生')
        self.delete_button.cli
### 右键点击获取多层结构中的特定位置特征信息 在地理信息系统(GIS)或制图应用程序中,通过右键单击来获取某个特定点上的多层特征信息是一项常见的功能需求。以下是实现这一目标的技术细节: #### 使用 Quantum GIS (QGIS) 实现此功能 Quantum GIS 是一种跨平台的开源地理信息系统工具[^1],支持多种数据格式并提供丰富的插件生态系统。为了实现在 QGIS 中通过右键点击获取多个图层上某一点的信息,可以利用其 Python 插件开发能力。 以下是一个简单的脚本示例,展示如何捕获鼠标右键事件并查询该点下的所有图层特性: ```python from qgis.core import QgsMapLayer, QgsFeatureRequest from PyQt5.QtCore import QPoint from qgis.gui import QgsMapToolIdentify class IdentifyFeatures(QgsMapToolIdentify): def __init__(self, iface): self.iface = iface super().__init__(iface.mapCanvas()) def canvasReleaseEvent(self, event): if event.button() == 2: # Right mouse button clicked point = self.toMapCoordinates(event.pos()) identify_results = self.identify( int(point.x()), int(point.y()), [layer for layer in self.iface.mapCanvas().layers()], mode=self.TopDownAll, behavior=QgsMapToolIdentify.LayerSelection ) if identify_results: feature_info = [] for result in identify_results: attributes = result.mFeature.attributes() layer_name = result.mLayer.name() feature_info.append(f"{layer_name}: {attributes}") message = "\n".join(feature_info) self.iface.messageBar().pushInfo("Feature Info", message) # Register the custom map tool with QGIS interface identify_tool = IdentifyFeatures(iface) iface.mapCanvas().setMapTool(identify_tool) ``` 上述代码定义了一个自定义的地图工具 `IdentifyFeatures`,它会在用户右键点击时触发,并返回指定坐标下所有可见图层的相关属性信息。 #### 利用 GisMap 组件构建应用 如果正在开发自己的 GIS 应用程序,则可以选择基于 Map Component 的库如 GisMap 来完成相同的功能[^2]。这类组件通常允许开发者绑定交互行为到地图控件上,比如监听鼠标的上下文菜单事件,并调用 API 查询空间对象的数据记录。 对于此类场景的具体实现方式取决于所选框架的支持程度以及文档说明,请查阅官方指南了解更多详情。 #### 结合 OpenStreetMap 编辑器扩展功能 当涉及到开放街道地图(OpenStreetMap,OSSM)编辑操作时,像 JOSM 这样的高级编辑软件提供了灵活可定制的工作流程[^3]。虽然原生界面可能不直接支持复杂的多层次要素检索,但是可以通过编写插件或者修改源码的形式增加这项特性。 --- ### 总结 无论是采用成熟的桌面端解决方案还是自行搭建专属系统,在现代 GIS 平台技术栈里均存在可行的方法去达成“通过右键点击提取多层结构里的具体地点关联资料”的目的。关键是依据项目实际状况挑选合适的工具链与方法论。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

LIY若依

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值