pyqt5 Dialog 打开位置在界面中心不是屏幕中心
时间: 2023-08-31 20:36:42 浏览: 160
python实现好看的GUI界面pyqt5
5星 · 资源好评率100%
### 回答1:
可以使用QDesktopWidget类获取屏幕分辨率,然后计算对话框的位置,使其位于屏幕中心。以下是一个示例代码:
```python
from PyQt5.QtWidgets import QApplication, QDialog, QDesktopWidget
class MyDialog(QDialog):
def __init__(self, parent=None):
super().__init__(parent)
self.setWindowTitle('My Dialog')
self.resize(300, 200)
# 获取屏幕分辨率
desktop = QDesktopWidget()
screenRect = desktop.screenGeometry()
screenWidth = screenRect.width()
screenHeight = screenRect.height()
# 计算对话框位置
dialogWidth = self.width()
dialogHeight = self.height()
x = (screenWidth - dialogWidth) / 2
y = (screenHeight - dialogHeight) / 2
# 设置对话框位置
self.move(x, y)
if __name__ == '__main__':
app = QApplication([])
dialog = MyDialog()
dialog.show()
app.exec_()
```
在上面的代码中,我们通过QDesktopWidget类获取了屏幕的分辨率,并计算出了对话框的位置。最后使用`self.move()`方法设置对话框的位置。
### 回答2:
在PyQt5中,可以通过设置Dialog的位置实现打开位置在界面中心的效果。具体步骤如下:
1. 首先,创建一个继承自QDialog的自定义Dialog类。
2. 在构造函数中,设置Dialog的窗口属性,使用setWindowFlags()函数。
```python
class MyDialog(QtWidgets.QDialog):
def __init__(self, parent=None):
super(MyDialog, self).__init__(parent)
self.setWindowFlags(QtCore.Qt.Window | QtCore.Qt.CustomizeWindowHint | QtCore.Qt.WindowTitleHint)
```
3. 创建主界面的类,并在类中添加打开Dialog的按钮。
```python
class MainWindow(QtWidgets.QMainWindow):
def __init__(self, parent=None):
super(MainWindow, self).__init__(parent)
self.dialog_btn = QtWidgets.QPushButton("打开Dialog")
self.dialog_btn.clicked.connect(self.open_dialog)
self.setCentralWidget(self.dialog_btn)
def open_dialog(self):
dialog = MyDialog(self)
dialog.exec_()
```
4. 在MainWindow类中的open_dialog()方法中,实例化自定义的Dialog类并调用exec_()方法显示Dialog。
这样设置后,Dialog会在界面的中心位置打开,而不是屏幕中心位置。
### 回答3:
PyQt5中的Dialog可以通过设置窗口大小和位置来实现在界面中心打开,而不是屏幕中心。
在PyQt5中,可以使用`QDesktopWidget`类来获取屏幕的大小和位置,然后利用窗口的大小来计算Dialog在屏幕中心的位置。以下是一个示例代码:
```python
from PyQt5.QtWidgets import QApplication, QDialog, QDesktopWidget
import sys
class MyDialog(QDialog):
def __init__(self):
super().__init__()
self.setWindowTitle("Dialog")
self.resize(300, 200) # 设置Dialog的大小
# 获取屏幕的大小和位置
screen_geometry = QDesktopWidget().screenGeometry()
# 计算Dialog在屏幕中心的位置
center_x = (screen_geometry.width() - self.width()) / 2
center_y = (screen_geometry.height() - self.height()) / 2
# 设置Dialog在屏幕中心的位置
self.move(center_x, center_y)
if __name__ == '__main__':
app = QApplication(sys.argv)
dialog = MyDialog()
dialog.show()
sys.exit(app.exec_())
```
以上代码创建了一个名为`MyDialog`的Dialog类,并重写了其构造函数。在构造函数中,先设置了Dialog的标题和大小。
然后使用`QDesktopWidget`类获取屏幕的大小和位置,然后计算Dialog在屏幕中心的位置(即屏幕宽度减去Dialog宽度的一半,屏幕高度减去Dialog高度的一半),最后使用`move()`函数将Dialog移动到计算得到的位置。
最后,我们创建一个`QApplication`对象,实例化`MyDialog`类并显示Dialog,最后进入应用程序的事件循环中。
当我们运行以上代码时,Dialog将会在界面中心打开。
阅读全文