PyQt5将dialog正确地居中到其父窗口的中心
时间: 2023-06-26 21:07:24 浏览: 301
可以使用`QDialog`类的`setGeometry()`方法来实现将dialog居中到其父窗口的中心。
以下是一个例子代码:
```python
import sys
from PyQt5.QtWidgets import QApplication, QDialog, QVBoxLayout, QPushButton
class Example(QDialog):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
# 创建按钮
btn = QPushButton('打开对话框', self)
btn.move(20, 20)
btn.clicked.connect(self.showDialog)
self.setGeometry(300, 300, 250, 150)
self.setWindowTitle('居中对话框')
self.show()
def showDialog(self):
# 创建对话框
dialog = QDialog(self)
dialog.setWindowTitle('对话框')
# 创建对话框布局和按钮
vbox = QVBoxLayout()
vbox.addWidget(QPushButton('确定', dialog))
vbox.addWidget(QPushButton('取消', dialog))
# 将布局设置为对话框的布局
dialog.setLayout(vbox)
# 将对话框居中到其父窗口的中心
dialog.setGeometry(self.frameGeometry().center().x() - dialog.width()/2,
self.frameGeometry().center().y() - dialog.height()/2,
dialog.width(),
dialog.height())
dialog.exec_()
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
```
在该例中,我们创建了一个按钮,当单击按钮时,会打开一个对话框,该对话框已经居中到其父窗口的中心。可以看到,在`showDialog`方法中,我们首先创建了一个`QDialog`类的实例,并设置了标题。接下来,我们创建了一个垂直布局和两个按钮,然后将布局设置为对话框的布局。最后,我们使用`setGeometry()`方法将对话框居中到其父窗口的中心。
阅读全文