Pyqt 基礎功能

總結Pyqt的基礎知識前端

 

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

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

 

1.1 修改窗體大小less

self.resize(500, 400)

 

2. 當按下Esc退出函數

重載keyPressEvent字體

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

 

3.去掉標題欄ui

1 self.setWindowFlags(Qt.FramelessWindowHint | Qt.WindowStaysOnTopHint)

 

self.setWindowFlags(Qt.CustomizeWindowHint)  # 有透明邊框

 

4.觸發信號槽編碼

內部方法 triggered()    clicked()spa

執行:  quit().net

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

 

5.彈框消息code

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

1 OK = QtGui.QMessageBox.question(self, (u'提示'),(u'滾動軸點擊'),QtGui.QMessageBox.Yes , QtGui.QMessageBox.No)

 

6.支持窗口拖動

重載鼠標事件方法

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

 

7.設置全局編碼

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

 

 

 8.設置標題、Icon

1 label.setPixmap(QtGui.QPixmap(filename))
3 self.setWindowTitle('Pyqt ComboBox')
4 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.顯示在最前端

self.setWindowFlags(QtCore.Qt.WindowStaysOnTopHint)

 

12.窗體透明度

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

 

13.只顯示關閉按鈕

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

 14.隱藏狀態欄

self.setWindowFlags(QtCore.Qt.Tool )

 

15.自定義發射事件信號

from PyQt5.QtWidgets import *
from PyQt5 import QtCore

class MyForm(QMainWindow):
    _signal = QtCore.pyqtSignal(str)  # 定義信號,定義參數爲str類型  str、int、list、object、float、tuple、dict

    def __init__(self):
        super().__init__()
        button = QPushButton('Button ')
        button.clicked.connect(self.on_button)

        self._signal.connect(self.mySignal)  # 將信號鏈接到函數mySignal
        layout = QHBoxLayout()
        layout.addWidget(button)
        main_frame = QWidget()
        main_frame.setLayout(layout)
        self.setCentralWidget(main_frame)

    def on_button(self):
        self._signal.emit('hello,你好')  # 須要之時emit 

    def mySignal(self, string):
        print(string)


if __name__ == "__main__":
    import sys
    app = QApplication(sys.argv)
    form = MyForm()
    form.show()
    app.exec_()

 

16.信號和槽傳遞額外參數

from PyQt5.QtWidgets import *
# 使用lambda傳遞按鈕數字給槽     by: http://blog.csdn.net/a359680405/article/details/45246605
class MyForm(QMainWindow):
    def __init__(self):
        super().__init__()
        button1 = QPushButton('Button 1')
        button2 = QPushButton('Button 2')
        button1.clicked.connect(lambda: self.on_button('1'))
        button2.clicked.connect(lambda: self.on_button('2'))

        layout = QHBoxLayout()
        layout.addWidget(button1)
        layout.addWidget(button2)

        main_frame = QWidget()
        main_frame.setLayout(layout)
        self.setCentralWidget(main_frame)

    def on_button(self, n):
        print('Button {0} clicked'.format(n))

if __name__ == "__main__":
    import sys
    app = QApplication(sys.argv)
    form = MyForm()
    form.show()
    app.exec_()
相關文章
相關標籤/搜索