screen = QDesktopWidget().screenGeometry()
size = self.geometry()
self.move((screen.width() - size.width()) / 2,
(screen.height() - size.height()) / 2)
def mousePressEvent(self, event):
if event.button() == Qt.LeftButton:
self.m_flag = True
self.m_Position = event.globalPos() - self.pos() # 获取鼠标相对窗口的位置
event.accept()
self.setCursor(QCursor(Qt.OpenHandCursor)) # 更改鼠标图标
def mouseMoveEvent(self, QMouseEvent):
if Qt.LeftButton and self.m_flag:
self.move(QMouseEvent.globalPos() - self.m_Position) # 更改窗口位置
QMouseEvent.accept()
def mouseReleaseEvent(self, QMouseEvent):
self.m_flag = False
self.setCursor(QCursor(Qt.ArrowCursor))
@pyqtSlot()
def on_pushButton_max_clicked(self):
if self.isMaximized():
self.showNormal()
else:
self.showMaximized()
@pyqtSlot()
def on_pushButton_min_clicked(self):
self.showMinimized()
@pyqtSlot()
def on_pushButton_close_clicked(self):
self.close()
引入库from PyQt5.QtCore import *from PyQt5.QtWidgets import *from PyQt5.QtGui import *居中 # 窗口居中 def center(self): screen = QDesktopWidget().screenGeometry() size = self....
#
PyQt
5无边框
窗口
边缘可拖动调节
窗口
大小 双击
最大化
还原
1. 去除
窗口
边框,自绘标题栏;
2. 通过鼠标事件定义了
窗口
边缘的拖动事件,使无边框
窗口
也能调节大小;
3. 增加了自绘标题栏双击时
窗口
最大化
和还原的事件,模仿原生
窗口
效果。
最近做的一个小仿真工具要结题了。在设计之初因为要用到
PYQT
的布局,因为QMainWindow有自己的布局方式,如果界面继承自QMainWindow,会丢失掉所有的布局,所以使用QDialog做布局。开发完成后发现一个小问题一直没有解决。
这个界面的头部默认只有?和X,放大缩小都没有。百度了一下,这个QDialog的默认设置,也有很多方法设置这个头部,比如下文中的提到的方法。
https://blog.csdn.net/qq_24185239/article/details/88575891?utm_med
在父
窗口
上用非模态方式创建子
窗口
,当
最小化
父
窗口
时,子
窗口
也随着父
窗口
最小化
,下面的方法解决了子
窗口
不随着父
窗口
最小化
;
DialogTool = *pTool;
pTool = new DialogTool;
pTool->Create(IDD_DIALOG_TOOL,GetDesktopWindow());
pTool->ShowWindow(SW_HIDE);
解决的方法就是把
QMainWindow、QWidget、QDialog用于创建
窗口
,可以直接使用,也可以派生使用。
QMainWindow
窗口
包含菜单栏、工具栏、状态栏、标题栏等,是最常见的
窗口
形式。
QDialog是对话框
窗口
的基类,主要用于执行短期任务,或与用户进行交互,可以是模态或非模态的。QDialog对话框没有菜单栏、工具栏、状态栏等。
QWidget是Qt图形组件的基类,可以作为顶层
窗口
,也可以嵌入到...
问题1:通过点击Button打开新
窗口
后,如何实现不
关闭
新
窗口
的情况下再点击Button时不会新建
窗口
,而是显示先前打开的
窗口
?(以前用tkinter时遇到这个问题,是使用一个boolean值来做开关,如果对象已创建,就不新建,否则新建,然后
关闭
窗口
时在控制该boolean,该方法可行但是比较麻烦)
分析:有两种方法:
1.新建
窗口
时使用exec_()函数(显示一个模式对话框,并且锁住程序直到...
```python
from
PyQt
5.QtWidgets import QApplication, QWidget, QPushButton
from
PyQt
5.QtCore import Qt
class MyWidget(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.setWindowTitle('
PyQt
5
关闭
窗口
最小化
和
最大化
按钮')
self.setGeometry(300, 300, 300, 200)
self.setWindowFlags(Qt.WindowCloseButtonHint) # 隐藏
最大化
和
最小化
按钮
btn = QPushButton('
关闭
窗口
', self)
btn.move(100, 100)
btn.clicked.connect(self.close)
if __name__ == '__main__':
app = QApplication([])
w = MyWidget()
w.show()
app.exec_()
在上面的代码中,我们通过设置`setWindowFlags`方法来隐藏
最大化
和
最小化
按钮,然后创建了一个
关闭
窗口
的按钮。