Python 利用pyqt创建窗口窗口上数据表形式列出所有学生成绩
时间: 2023-08-31 16:34:15 浏览: 118
### 回答1:
好的,首先你需要安装 PyQt5 库。可以使用 pip 命令安装:
```python
pip install PyQt5
```
接下来,你需要创建一个窗口并在窗口上添加一个表格控件。可以使用 Qt Designer 工具创建一个窗口,并在窗口上添加一个表格控件,然后将其保存为一个 .ui 文件。
下面是一个示例代码,它会加载窗口 .ui 文件,并将学生成绩显示在表格中。
```python
from PyQt5.QtWidgets import QApplication, QWidget, QTableWidget, QTableWidgetItem
from PyQt5.uic import loadUi
import csv
class MainWindow(QWidget):
def __init__(self):
super(MainWindow, self).__init__()
loadUi('mainwindow.ui', self)
self.load_data()
def load_data(self):
# 从 CSV 文件中读取学生成绩
with open('scores.csv', 'r', newline='') as csvfile:
reader = csv.reader(csvfile)
data = list(reader)
# 设置表格行列数
self.tableWidget.setRowCount(len(data))
self.tableWidget.setColumnCount(len(data[0]))
# 设置表头
header = ['学号', '姓名', '科目1', '科目2', '科目3', '总分']
self.tableWidget.setHorizontalHeaderLabels(header)
# 填充表格数据
for i in range(len(data)):
for j in range(len(data[i])):
item = QTableWidgetItem(data[i][j])
self.tableWidget.setItem(i, j, item)
# 计算总分并设置样式
for i in range(len(data)):
total = sum([int(x) for x in data[i][2:5]])
item = QTableWidgetItem(str(total))
self.tableWidget.setItem(i, 5, item)
if total < 180:
self.tableWidget.item(i, 5).setBackground(Qt.red)
elif total < 210:
self.tableWidget.item(i, 5).setBackground(Qt.yellow)
else:
self.tableWidget.item(i, 5).setBackground(Qt.green)
if __name__ == '__main__':
app = QApplication([])
window = MainWindow()
window.show()
app.exec_()
```
在这个示例代码中,我们使用 `QTableWidget` 控件来显示学生成绩,并使用 `csv` 模块来读取 CSV 文件中的数据。我们还计算了每个学生的总分,并根据总分的值设置了表格单元格的样式。你可以根据自己的需要修改代码。
### 回答2:
使用Python和PyQt库可以很方便地创建一个窗口,窗口上可以以数据表的形式列出所有学生的成绩。首先,需要安装PyQt库并导入相关的模块。
```python
from PyQt5.QtWidgets import QApplication, QMainWindow, QTableWidget, QTableWidgetItem
# 创建一个QApplication实例
app = QApplication([])
# 创建一个QMainWindow实例,作为窗口的主界面
window = QMainWindow()
# 创建一个QTableWidget实例,用于显示数据表
table = QTableWidget()
# 设置表格的行数和列数
rows = 5 # 假设有5个学生
columns = 3 # 假设有3门课程的成绩
table.setRowCount(rows)
table.setColumnCount(columns)
# 设置表头
table.setHorizontalHeaderLabels(["姓名", "课程1", "课程2"])
# 添加数据
data = [
["张三", "90", "85"],
["李四", "95", "92"],
["王五", "80", "88"],
["赵六", "92", "87"],
["钱七", "88", "90"]
]
for i in range(rows):
for j in range(columns):
item = QTableWidgetItem(data[i][j])
table.setItem(i, j, item)
# 将表格添加到窗口中
window.setCentralWidget(table)
# 设置窗口的标题和大小
window.setWindowTitle("学生成绩")
window.resize(400, 300)
# 显示窗口
window.show()
# 运行应用程序
app.exec_()
```
上述代码中,我们创建了一个QApplication实例,作为整个应用程序的主对象。随后,创建了一个QMainWindow实例,用作窗口的主界面。
然后,创建了一个QTableWidget实例,用于显示数据表。我们通过设置表格的行数、列数和表头来初始化表格。
接下来,我们使用一个二维列表来存储学生成绩数据,然后使用两个嵌套的循环将数据逐一添加到表格中。
最后,将表格添加到窗口的中央区域,并设置窗口的标题和大小。
最后,通过调用QApplication的exec_()函数来启动应用程序。这样,就可以在一个窗口中以数据表的形式列出所有学生成绩了。
### 回答3:
使用PyQt可以轻松创建一个窗口并在窗口上以数据表的形式列出所有学生成绩。
首先,需要安装PyQt库,并确保已经安装了相应的Python版本。然后,可以通过创建一个新的PyQt应用程序来实现。
下面是一个简单的实现示例:
```python
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QTableWidget, QTableWidgetItem
class GradeWindow(QMainWindow):
def __init__(self, grades):
super().__init__()
self.setWindowTitle("学生成绩表")
# 创建一个QTableWidget对象
table = QTableWidget(len(grades), 2, self)
table.setHorizontalHeaderLabels(["学生姓名", "成绩"])
# 填充表格数据
for i, (name, grade) in enumerate(grades.items()):
name_item = QTableWidgetItem(name)
grade_item = QTableWidgetItem(str(grade))
table.setItem(i, 0, name_item)
table.setItem(i, 1, grade_item)
self.setCentralWidget(table)
if __name__ == "__main__":
grades = {
"张三": 90,
"李四": 80,
"王五": 70,
"赵六": 60
}
app = QApplication(sys.argv)
window = GradeWindow(grades)
window.show()
sys.exit(app.exec_())
```
在这个例子中,我们首先创建了一个`GradeWindow`类,继承自`QMainWindow`。在`__init__`方法中,首先设置了窗口的标题,然后创建了一个`QTableWidget`对象,并设置了表格的列数和水平表头标签。
接下来,我们使用`enumerate`函数遍历学生成绩字典,并使用`QTableWidgetItem`来创建学生姓名和成绩的单元格。最后,使用`setItem`方法将单元格添加到表格中。
最后,在`__main__`中创建了一个学生成绩字典,并创建了一个`QApplication`对象和`GradeWindow`窗口对象。调用`show`方法显示窗口,并通过`sys.exit(app.exec_())`运行应用程序。
通过运行这段代码,便可以看到一个带有学生成绩表格的窗口显示出来,并且表格中显示了所有学生的成绩。
阅读全文