def query(self, sql): self. # 执行 SQL 查询语句 self.cursor.execute(sql) # 创建一个新窗口,并设置其属性 new_window = QWidget(self) new_window.setWindowTitle("查询员工信息") new_window.setGeometry(200, 200, 400, 300) # 创建返回按钮并设置其属性 return_button = QPushButton("返回", new_window) return_button.clicked.connect(new_window.close) # 获取查询结果并显示在表格中 rows = self.cursor.fetchall() self.table = QTableWidget() if rows: self.table.setRowCount(len(rows)) self.table.setColumnCount(len(rows[0])) for i, row in enumerate(rows): for j, col in enumerate(row): item = QTableWidgetItem(str(col)) self.table.setItem(i, j, item) self.table.setHorizontalHeaderLabels(["部门", "姓名", "性别", '职位', '工号', '状态']) self.table.horizontalHeader().setVisible(True) self.input_box = QLineEdit(new_window) # 修改状态标签的内容 self.status_label.setText("输入需要查询的数据,格式为:部门/姓名/性别/职位/工号/状态,对象") self.v_layout = QVBoxLayout(new_window) self.v_layout.addWidget(self.input_box) # 单个查询按键 query_button = QPushButton("单个查询", new_window) query_button.clicked.connect(lambda: self.query_data(new_window)) # 添加表格、按键到新窗口中 self.v_layout.addWidget(self.table) self.v_layout.addWidget(query_button) self.v_layout.addWidget(return_button) new_window.setLayout(self.v_layout) new_window.show() 如何关闭父窗口
时间: 2024-02-14 10:06:43 浏览: 92
在这段代码中,关闭父窗口的方式取决于您实例化主窗口的方式。如果您的主窗口是通过`QMainWindow`类创建的,可以使用以下代码关闭父窗口:
```python
self.close()
```
如果您的主窗口是通过`QWidget`类创建的,可以使用以下代码关闭父窗口:
```python
self.parent().close()
```
请注意,这两个方法都会关闭父窗口及其所有子窗口。如果您只想关闭父窗口而不关闭子窗口,请使用以下代码:
```python
self.parent().hide()
```
这将隐藏父窗口,但不会关闭它。
相关问题
def query(self, sql): # 执行 SQL 查询语句 self.cursor.execute(sql) # 获取查询结果并显示在表格中 rows = self.cursor.fetchall() if rows: self.table.setRowCount(len(rows)) self.table.setColumnCount(len(rows[0])) for i, row in enumerate(rows): for j, col in enumerate(row): item = QTableWidgetItem(str(col)) self.table.setItem(i, j, item)如何设置表格每列的名字
你可以使用 `setHorizontalHeaderLabels` 方法来设置表格每列的名字。例如,如果你想将表格的第一列命名为 "姓名",第二列命名为 "年龄",第三列命名为 "性别",你可以这样写:
```
self.table.setHorizontalHeaderLabels(["姓名", "年龄", "性别"])
```
将上述代码放到 `query` 方法中,在设置表格数据之前调用即可。
def query(self, sql): # 创建一个新窗口,并设置其属性 new_window = QWidget(self) new_window.setWindowTitle("添加员工信息") new_window.setGeometry(100, 100, 800, 600) # 创建返回按钮并设置其属性 return_button = QPushButton("返回", new_window) return_button.setGeometry(10, 10, 50, 30) return_button.clicked.connect(new_window.close) # 执行 SQL 查询语句 self.cursor.execute(sql) # 获取查询结果并显示在表格中 rows = self.cursor.fetchall() self.table = QTableWidget() if rows: self.table.setRowCount(len(rows)) self.table.setColumnCount(len(rows[0])) for i, row in enumerate(rows): for j, col in enumerate(row): item = QTableWidgetItem(str(col)) self.table.setItem(i, j, item) self.table.setHorizontalHeaderLabels(["部门", "姓名", "性别", '职位', '工号', '状态']) self.table.horizontalHeader().setVisible(True) # 将表格添加到新窗口中 self.v_layout = QVBoxLayout(new_window) self.v_layout.addWidget(self.table) self.v_layout.addWidget(return_button) # 显示新窗口 new_window.setLayout(self.v_layout) new_window.show()在这个例子中如何在打开新窗口时关闭父窗口
在这个例子中,可以在打开新窗口时关闭父窗口,方法如下:
1. 在父窗口中创建一个函数,用于打开查询窗口,并在打开查询窗口时将父窗口的引用传递给查询窗口。
```python
def open_query_window(self, sql):
# 创建一个新窗口
new_window = QWidget()
new_window.setWindowTitle("查询结果")
new_window.setGeometry(100, 100, 800, 600)
# 在打开查询窗口时将父窗口的引用传递给查询窗口
self.query_window = new_window
# 创建返回按钮并设置其属性
return_button = QPushButton("返回", new_window)
return_button.setGeometry(10, 10, 50, 30)
return_button.clicked.connect(new_window.close)
# 执行 SQL 查询语句
self.cursor.execute(sql)
# 获取查询结果并显示在表格中
rows = self.cursor.fetchall()
self.table = QTableWidget()
if rows:
self.table.setRowCount(len(rows))
self.table.setColumnCount(len(rows[0]))
for i, row in enumerate(rows):
for j, col in enumerate(row):
item = QTableWidgetItem(str(col))
self.table.setItem(i, j, item)
self.table.setHorizontalHeaderLabels(["部门", "姓名", "性别", '职位', '工号', '状态'])
self.table.horizontalHeader().setVisible(True)
# 将表格添加到新窗口中
self.v_layout = QVBoxLayout(new_window)
self.v_layout.addWidget(self.table)
self.v_layout.addWidget(return_button)
# 显示新窗口
new_window.setLayout(self.v_layout)
new_window.show()
# 隐藏父窗口
self.hide()
```
在这个函数中,我们在打开查询窗口时将父窗口的引用传递给 `self.query_window` 变量,并在关闭查询窗口时将其设置为 `None`。同时,在打开查询窗口时,我们隐藏了父窗口。
2. 在查询窗口中创建一个函数,用于关闭查询窗口并显示父窗口。
```python
def close_query_window(self):
# 关闭查询窗口
self.query_window.close()
# 显示父窗口
self.show()
```
在这个函数中,我们关闭了查询窗口,并通过 `self.show()` 方法显示了父窗口。
3. 在父窗口中创建一个按钮,用于关闭查询窗口并显示父窗口。
```python
# 在父窗口中创建一个按钮,用于关闭查询窗口并显示父窗口
close_query_button = QPushButton("关闭窗口", self)
close_query_button.setGeometry(10, 50, 100, 30)
close_query_button.clicked.connect(self.close_query_window)
```
在这个按钮的点击事件中,我们调用了 `self.close_query_window()` 方法,用于关闭查询窗口并显示父窗口。
完整代码示例:
```python
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QTableWidget, QTableWidgetItem, QVBoxLayout
class MainWindow(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
# 创建查询按钮
query_button = QPushButton("查询", self)
query_button.setGeometry(10, 10, 100, 30)
query_button.clicked.connect(lambda: self.open_query_window("SELECT * FROM employees"))
# 在父窗口中创建一个按钮,用于关闭查询窗口并显示父窗口
close_query_button = QPushButton("关闭窗口", self)
close_query_button.setGeometry(10, 50, 100, 30)
close_query_button.clicked.connect(self.close_query_window)
# 显示父窗口
self.setGeometry(100, 100, 800, 600)
self.setWindowTitle('员工信息管理系统')
self.show()
def open_query_window(self, sql):
# 创建一个新窗口
new_window = QWidget()
new_window.setWindowTitle("查询结果")
new_window.setGeometry(100, 100, 800, 600)
# 在打开查询窗口时将父窗口的引用传递给查询窗口
self.query_window = new_window
# 创建返回按钮并设置其属性
return_button = QPushButton("返回", new_window)
return_button.setGeometry(10, 10, 50, 30)
return_button.clicked.connect(new_window.close)
# 执行 SQL 查询语句
self.cursor.execute(sql)
# 获取查询结果并显示在表格中
rows = self.cursor.fetchall()
self.table = QTableWidget()
if rows:
self.table.setRowCount(len(rows))
self.table.setColumnCount(len(rows[0]))
for i, row in enumerate(rows):
for j, col in enumerate(row):
item = QTableWidgetItem(str(col))
self.table.setItem(i, j, item)
self.table.setHorizontalHeaderLabels(["部门", "姓名", "性别", '职位', '工号', '状态'])
self.table.horizontalHeader().setVisible(True)
# 将表格添加到新窗口中
self.v_layout = QVBoxLayout(new_window)
self.v_layout.addWidget(self.table)
self.v_layout.addWidget(return_button)
# 显示新窗口
new_window.setLayout(self.v_layout)
new_window.show()
# 隐藏父窗口
self.hide()
def close_query_window(self):
# 关闭查询窗口
self.query_window.close()
# 显示父窗口
self.show()
if __name__ == '__main__':
app = QApplication(sys.argv)
main_window = MainWindow()
sys.exit(app.exec_())
```
阅读全文
相关推荐
















