app=QApplication(sys.argv) table=Table() table.show() sys.exit(app.exec_()) 作用
时间: 2024-06-04 08:08:50 浏览: 83
这段代码是使用 PyQt5 库实现的一个 GUI 程序,具体作用如下:
1. 创建了一个 QApplication 实例 app,用于管理 GUI 应用程序的控制流和主要设置。
2. 创建了一个 Table 实例 table,即表格部件。
3. 调用 show() 方法显示表格部件。
4. 进入 PyQt5 的事件循环中,等待用户交互和事件响应。
5. 当用户关闭程序或者调用 quit() 方法时,退出事件循环,调用 sys.exit() 方法结束程序。
相关问题
class MainWindow(QMainWindow): def __init__(self): super().__init__() # 创建表格 self.table = QTableWidget(self) self.table.setColumnCount(1) # 设置列数为1 # 调用获取数据函数 data = self.get_data() if data: # 插入数据到表格 row_position = self.table.rowCount() self.table.insertRow(row_position) self.table.setItem(row_position, 0, QTableWidgetItem(data.decode())) # 设置表格大小和标题 self.table.resize(400, 300) self.table.setWindowTitle('数据框') self.setCentralWidget(self.table) def get_data(self): ser = serial.Serial('COM3', 9600) value = ser.readline() if value: # 将字符串按空格分割,并取第三个元素作为数值 value_str = value.decode().strip().split()[1] data = float(value_str) ser.close() return data if __name__ == '__main__': app = QApplication(sys.argv) mw = MainWindow() mw.show() sys.exit(app.exec_()) self.table.setItem(row_position, 0, QTableWidgetItem(data.decode())) AttributeError: 'float' object has no attribute 'decode'
这个错误是因为你尝试对一个浮点数调用 `decode()` 方法,但是浮点数类型没有定义 `decode()` 方法。在这个情况下,你可以直接将获取到的值转换为字符串类型,然后将其插入到表格中:
```
def __init__(self):
super().__init__()
# 创建表格
self.table = QTableWidget(self)
self.table.setColumnCount(1) # 设置列数为1
# 调用获取数据函数
data = self.get_data()
if data:
# 插入数据到表格
row_position = self.table.rowCount()
self.table.insertRow(row_position)
# 将获取到的数据转换为字符串类型,并插入到表格中
self.table.setItem(row_position, 0, QTableWidgetItem(str(data)))
# 设置表格大小和标题
self.table.resize(400, 300)
self.table.setWindowTitle('数据框')
self.setCentralWidget(self.table)
def get_data(self):
ser = serial.Serial('COM3', 9600)
value = ser.readline()
if value:
# 将字符串按空格分割,并取第三个元素作为数值
value_str = value.decode().strip().split()[1]
data = float(value_str)
ser.close()
return data
```
class MainWindow(QMainWindow): def __init__(self): super().__init__() self.setFixedSize(800, 600) main_layout = QVBoxLayout() central_widget = QWidget() central_widget.setLayout(main_layout) self.setCentralWidget(central_widget) button_layout = QVBoxLayout() button1 = QPushButton('当日员工工资') button1.setFixedSize(200, 50) button1.clicked.connect(self.show_query1_result) button_layout.addStretch() button_layout.addWidget(button1) button_layout.addStretch() layout = QHBoxLayout() layout.addStretch() layout.addLayout(button_layout) layout.addStretch() widget = QWidget() widget.setLayout(layout) self.setCentralWidget(widget) main_layout.addLayout(button_layout) self.query1_window = QueryResultWindow() def show_query1_result(self): db = pymysql.connect(host='39.99.214.172', user='root', password='Solotion.123', db='jj_tset') cursor = db.cursor() db_sql = """ """ cursor.execute(db_sql) result = cursor.fetchall() db.close() if len(result) == 0: QMessageBox.information(self, "提示", "今日无员工工资记录") return self.query1_window.table_widget.setRowCount(0) self.query1_window.table_widget.setColumnCount(len(result[0])) self.query1_window.table_widget.setHorizontalHeaderLabels( ["员工ID", "员工姓名", "日期", "领取鸡爪重量(KG)", "效率(每小时KG)", "出成率", "基础工资", "重量奖励", "当日总工资"]) for row_num, row_data in enumerate(result): self.query1_window.table_widget.insertRow(row_num) for col_num, col_data in enumerate(row_data): self.query1_window.table_widget.setItem(row_num, col_num, QTableWidgetItem(str(col_data))) self.query1_window.show() class QueryResultWindow(QWidget): def __init__(self): super().__init__() self.setFixedSize(800, 600) self.table_widget = QTableWidget() self.table_widget.setEditTriggers(QTableWidget.NoEditTriggers) self.table_widget.setSelectionBehavior(QTableWidget.SelectRows) layout = QVBoxLayout() layout.addWidget(self.table_widget) self.setLayout(layout) if __name__ == '__main__': app = QApplication(sys.argv) loginWindow = LoginWindow() loginWindow.show() sys.exit(app.exec_()))数据展示页面怎么设置筛选器按ID筛选结果并展示
你可以在数据展示页面添加一个QLineEdit和一个QPushButton,让用户输入员工ID并点击按钮进行筛选。
具体实现方法如下:
1. 在QueryResultWindow类的初始化函数中添加以下代码来创建QLineEdit和QPushButton:
```
self.id_line_edit = QLineEdit()
self.filter_button = QPushButton('筛选')
self.filter_button.clicked.connect(self.filter_result)
```
2. 在layout中添加这两个控件:
```
layout.addWidget(self.id_line_edit)
layout.addWidget(self.filter_button)
```
3. 添加filter_result函数来执行筛选操作:
```
def filter_result(self):
id = self.id_line_edit.text().strip()
if len(id) == 0:
QMessageBox.warning(self, '提示', '请输入员工ID')
return
db = pymysql.connect(host='39.99.214.172', user='root', password='Solotion.123', db='jj_tset')
cursor = db.cursor()
db_sql = f"SELECT * FROM table_name WHERE id = '{id}'"
cursor.execute(db_sql)
result = cursor.fetchall()
db.close()
if len(result) == 0:
QMessageBox.information(self, "提示", "没有找到符合条件的记录")
return
self.table_widget.setRowCount(0)
for row_num, row_data in enumerate(result):
self.table_widget.insertRow(row_num)
for col_num, col_data in enumerate(row_data):
self.table_widget.setItem(row_num, col_num, QTableWidgetItem(str(col_data)))
```
注意替换db_sql中的table_name为你的表名。这个函数会从数据库中查询符合条件的记录并展示在表格中。
4. 修改show_query1_result函数,在最开始添加以下代码,用于展示所有记录:
```
db = pymysql.connect(host='39.99.214.172', user='root', password='Solotion.123', db='jj_tset')
cursor = db.cursor()
db_sql = """SELECT * FROM table_name"""
cursor.execute(db_sql)
result = cursor.fetchall()
db.close()
if len(result) == 0:
QMessageBox.information(self, "提示", "今日无员工工资记录")
return
```
注意同样替换db_sql中的table_name为你的表名。这个代码块会在进入数据展示页面时展示所有记录。
通过以上修改,你就可以在数据展示页面添加筛选功能了。
阅读全文
相关推荐
















