zoukankan      html  css  js  c++  java
  • Pyqt 基础功能

    总结Pyqt的基础知识

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

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

    1.1 修改窗体大小

    self.resize(500, 400)

    2. 当按下Esc退出

    重载keyPressEvent

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

    3.去掉标题栏

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

    4.触发信号槽

    内部方法 triggered()    clicked()

    执行:  quit()

    1 QtGui.QWidget.connect(self.ui_qr.pushButtonOk, QtCore.SIGNAL('clicked()'), self.generateQr) 
    2 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     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_()
  • 相关阅读:
    汇编中寄存器及其用处
    直接打印则需要调用PrintDocumnt.Print()方可打印,否按在对话框中点【打印】但不会有反应
    操作另一窗体的变量事件
    System.Windows.Forms.ListControl.SelectedValue.get 返回 null
    combox的selectedValue初始值注意事项
    vs2017中EF6.4无法导入到PM中,应使用EF6.2或6.1.1
    去除 Datetime的字段会自动赋默认值0001-1-1 0:00:00
    EF使用问题备忘
    EF中自定义连接字符串
    C#如何改变DataTable中的数据?
  • 原文地址:https://www.cnblogs.com/dcb3688/p/4240978.html
Copyright © 2011-2022 走看看