因为实在忍受不了 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 )
|