怎么实现class LoginWindow(QWidget): def __init__(self): super().__init__() self.initUI() def initUI(self): self.setFixedSize(800, 500) self.setWindowTitle('鸡爪称重系统') # 创建一个QStackedWidget控件 self.stacked_widget = QStackedWidget(self) self.stacked_widget.setGeometry(0, 0, 800, 500) # 创建Login界面 login_widget = QWidget() self.stacked_widget.addWidget(login_widget) # 在Login界面上创建一个按钮 button = QPushButton('开始称重', login_widget) button.move(100, 100) button.setGeometry(300, 200, 200, 50)点击按钮后跳转下个界面,界面显示info_label
时间: 2023-12-23 09:03:09 浏览: 110
可以在startWeighing()函数中创建下一个界面,并在该界面上添加一个QLabel控件用于显示信息。
```
def startWeighing(self):
# 创建下一个界面
next_widget = QWidget()
self.stacked_widget.addWidget(next_widget)
# 添加一个QLabel控件用于显示信息
info_label = QLabel('这是下一个界面', next_widget)
info_label.setGeometry(300, 200, 200, 50)
# 切换到下一个界面
self.stacked_widget.setCurrentWidget(next_widget)
```
当点击按钮后,会创建下一个界面并切换到该界面,界面上会显示一个文本为“这是下一个界面”的QLabel控件。您可以根据需要修改文本内容和位置。
相关问题
class LoginWindow(QWidget): def __init__(self): super().__init__() self.initUI() def initUI(self): self.setFixedSize(800, 500) self.setWindowTitle('鸡爪称重系统')中怎么调用class MainWindow(QWidget): def __init__(self, user_id): super().__init__() self.user_id = user_id self.initUI() # 打开串口 self.ser = serial.Serial('COM7', 9600, timeout=1) def initUI(self): # 创建用于显示员工信息的控件 self.info_label = QLabel("员工信息", self) self.info_label.move(100, 50) self.info_label.setStyleSheet("font-size: 24px; color: black; background-color: #eee; border-radius: 10px;")
要在 LoginWindow 类中调用 MainWindow 类,你需要在 LoginWindow 类中添加一个按钮或者其他控件,然后给这个控件添加一个信号(signal),当这个控件被点击时,就会触发这个信号。接着在 LoginWindow 类中添加一个槽(slot),当信号被触发时,就会执行这个槽中的代码,从而打开 MainWindow 窗口。具体实现方法如下:
在 LoginWindow 类的 initUI 方法中添加一个按钮:
```
self.open_main_window_button = QPushButton("打开主窗口", self)
self.open_main_window_button.move(100, 100)
self.open_main_window_button.clicked.connect(self.open_main_window)
```
然后添加一个槽函数 open_main_window:
```
def open_main_window(self):
self.main_window = MainWindow(user_id)
self.main_window.show()
self.close()
```
这个方法中首先创建一个 MainWindow 实例,并传入 user_id 参数。然后调用 show 方法显示 MainWindow 窗口,并关闭当前 LoginWindow 窗口。这样当点击打开主窗口的按钮时,就会触发 open_main_window 方法,从而打开 MainWindow 窗口。
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为你的表名。这个代码块会在进入数据展示页面时展示所有记录。
通过以上修改,你就可以在数据展示页面添加筛选功能了。
阅读全文
相关推荐













