pyqt5 在主窗口中按button激活子窗口, 子窗口为QWidget,子窗口不能为QDialog
时间: 2024-05-08 16:17:17 浏览: 20
要在主窗口中按button激活子窗口,可以使用QMainWindow作为主窗口,然后在主窗口中创建一个QWidget作为子窗口。
以下是一个示例代码:
```python
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QWidget, QPushButton
class MySubWindow(QWidget):
def __init__(self, parent=None):
super().__init__(parent)
self.setWindowTitle('Sub Window')
相关问题
pyqt5 在主窗口中按button激活子窗口, 子窗口为QWidget
可以使用QDialog来作为子窗口,在主窗口中创建一个QPushButton,然后在按钮的clicked信号中槽函数中实例化一个QDialog,并使用exec()函数来显示子窗口。以下是示例代码:
```python
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QPushButton, QDialog
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.setWindowTitle('Main Window')
self.setGeometry(100, 100, 300, 200)
# 创建按钮
btn = QPushButton('Open Dialog', self)
btn.setGeometry(100, 100, 100, 30)
btn.clicked.connect(self.showDialog)
def showDialog(self):
dialog = QDialog(self)
dialog.setWindowTitle('Dialog')
dialog.setGeometry(200, 200, 200, 100)
dialog.exec_()
if __name__ == '__main__':
app = QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec_())
```
在这个示例中,我们创建了一个名为MainWindow的主窗口,其中包含一个名为btn的QPushButton。在按钮的clicked信号中,我们调用了showDialog函数,该函数实例化了一个名为dialog的QDialog,并使用exec()函数来显示它。
您可以根据需要更改QDialog的大小、标题和其他属性来适应您的应用程序需求。
pyqt5 在主窗口激活子窗口
您可以使用`QMainWindow`的`addDockWidget`方法将子窗口添加到主窗口中。然后,您可以使用`QDockWidget`的`setVisible`方法在需要时将子窗口显示出来。以下是一个示例:
```python
from PyQt5.QtWidgets import QApplication, QMainWindow, QDockWidget, QTextEdit, QPushButton
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
# 创建一个文本编辑器
self.text_edit = QTextEdit(self)
self.setCentralWidget(self.text_edit)
# 创建一个按钮,点击时显示子窗口
self.button = QPushButton('Show Sub Window', self)
self.button.clicked.connect(self.show_sub_window)
self.addToolBar(self.button)
# 创建一个子窗口,并添加到主窗口中
self.sub_window = QDockWidget('Sub Window', self)
self.sub_window.setWidget(QTextEdit())
self.addDockWidget(1, self.sub_window)
def show_sub_window(self):
# 显示子窗口
self.sub_window.setVisible(True)
if __name__ == '__main__':
app = QApplication([])
window = MainWindow()
window.show()
app.exec_()
```
在这个示例中,我们创建了一个主窗口,其中包含一个文本编辑器和一个工具栏。我们还创建了一个子窗口,并将其添加到主窗口中。当用户单击工具栏上的按钮时,子窗口将显示出来。注意,我们使用了`setVisible`方法来控制子窗口的可见性。