因为实在忍受不了C#的编码风格,但又要写窗体所以就转投Qt的怀抱,于是就开始研究PyQt,并使用PyQt5。

导言

1. Pyqt 设置禁止最大化及禁止拖拽窗口大小

1
2
3
4
# PyQT禁止窗口最大化按钮:
self.setWindowFlags(QtCore.Qt.WindowMinimizeButtonHint)
# PyQT禁止调整窗口大小:
self.setFixedSize(self.width(), self.height())

2. 当按下Esc退出

重载keyPressEvent

1
2
3
def keyPressEvent(self, event):
if event.key() ==QtCore.Qt.Key_Escape:
self.close()

3.去掉标题栏

1
2
self.setWindowFlags(Qt.FramelessWindowHint  Qt.WindowStaysOnTopHint)
self.setWindowFlags(Qt.CustomizeWindowHint) # 有透明边框

4.触发信号槽

内部方法 triggered() clicked()

执行: quit()

1
2
QtGui.QWidget.connect(self.ui_qr.pushButtonOk, QtCore.SIGNAL('clicked()'), self.generateQr) 
self.ui_qr.pushButtonOk.clicked.connect(self.generateQr)

5.弹框消息

消息类型: information, warning, question, about

1
OK = QtGui.QMessageBox.question(self, (u'提示'),(u'滚动轴点击'),QtGui.QMessageBox.Yes , QtGui.QMessageBox.No)

6.支持窗口拖动

重载鼠标事件方法

1
2
3
4
5
6
7
8
9
10
11
12
13
def mousePressEvent(self, event):
if event.button()==Qt.LeftButton:
self.m_drag=True
self.m_DragPosition=event.globalPos()-self.pos()
event.accept()

def mouseMoveEvent(self, QMouseEvent):
if QMouseEvent.buttons() and Qt.LeftButton:
self.move(QMouseEvent.globalPos()-self.m_DragPosition)
QMouseEvent.accept()

def mouseReleaseEvent(self, QMouseEvent):
self.m_drag=False

7.设置全局编码

1
2
3
# -*- coding: utf-8 -*-
reload(sys)
sys.setdefaultencoding("utf-8")

8.设置标题、Icon

1
2
3
label.setPixmap(QtGui.QPixmap(filename))
self.setWindowTitle('Pyqt ComboBox')
self.setWindowIcon(QtGui.QIcon('../Document/images/QQ.png'))

9.设置button, lineEdit等字体

1
self.lineEdit.setFont(QFont("SimSun", 18, QFont.Bold))     # 宋体 18号字体 粗体

10.退出后,后台继续保持进程

1
app.setQuitOnLastWindowClosed(True)  #true 关闭, false 开启后台

11.显示在最前端

1
self.setWindowFlags(QtCore.Qt.WindowStaysOnTopHint)

12.窗体透明度

1
self.setWindowOpacity(0.5)   # 1表示100%显示, 0.5 透明度50%

13.只显示关闭按钮

1
self.setWindowFlags(Qt.CustomizeWindowHint Qt.WindowCloseButtonHint )