美文网首页
PyQt5使用笔记

PyQt5使用笔记

作者: lissettecarlr | 来源:发表于2019-05-26 16:04 被阅读0次

    参考
    参考2

    1使用QT Designer绘制界面

    1.1 安装和汉化

    注意cmd使用管理员运行

    pip install PyQt5
    pip install PyQt5-tools
    

    进入python3\Lib\site-packages\pyqt5_tools
    找到translations目录,将文件拷贝到该目录下
    打开designer.exe即可

    1.2使用和生成.py

    建立一个MainWindow或者QWidget,前者是一个窗体后者是一个页面,前者有菜单状态栏而后者没有。


    image.png

    输入信息框一般使用Line Edit,输出使用Text Brower,按钮使用Push Button,不可修改的信息显示使用Label,这些组件可以用容器包裹,方便位置摆放和对其。例如


    image.png

    完成后就导出,生产的格式是at_tool_main.ui,我们需要转化为python
    pyuic5 -o at_tool_ui.py at_tool_main.ui

    2 编写逻辑部分

    下列例子仅仅是打开了生成的窗体,注意修改类参数,增加构造函数

    # 窗体相关
    from PyQt5 import QtWidgets
    from PyQt5.QtWidgets import QMessageBox,QMainWindow
    from PyQt5.QtCore import QTimer
    from at_tool_ui import Ui_MainWindow
    from at_tool_cfg_ui import Ui_Form
    
    class At_Tool(QtWidgets.QMainWindow,Ui_MainWindow):
        def __init__(self):
            super(At_Tool, self).__init__()
            self.setupUi(self)
            
    
    
    if __name__ == '__main__':
        app = QtWidgets.QApplication(sys.argv)
        win = At_Tool()
        win.show()
        sys.exit(app.exec_())
    

    按照目前的经验来看,觉得最好是不用修改ui生成的py界面文件,而是新建一个文件来作为他的逻辑部分。不然ui更新会重新生成py的界面文件,将会影响到之前在里面修改的代码。

    还有就是不要在自己的界面进程中延时,不然会让界面卡主,应该新建一个进程来执行一些需要延时的功能,例如

                # 建立一个线程来逐个发送
                _thread.start_new_thread(self.send_cfg, ("send_cfg", 3, ) )     
    
        def send_cfg(self,threadName,delay):
    
                send_data = "AT+DEVEUI=" +cfg_win.deveui+'\r\n' 
                self.ser.write(send_data.encode())
                time.sleep(delay) 
                send_data = "AT+APPEUI=" +cfg_win.appeui+'\r\n'
                self.ser.write(send_data.encode())
                time.sleep(delay) 
                send_data = "AT+APPKEY=" +cfg_win.appkey+'\r\n'
                self.ser.write(send_data.encode())
    
    • textBrowser
      添加显示信息
    textBrowser.insertPlainText("lalalal"+"\n\n")
    

    移动到文末

    textBrowser.moveCursor(win.textBrowser.textCursor().End)
    

    设置追加文字的颜色和大小

    self.textBrowser.append("<font color='red' size=36>  123123 <font>")
    
    • button
      绑定按键和函数
    class  test(QtWidgets.QMainWindow,Ui_mqtt_tool_main):
        def __init__(self):
          super( test, self).__init__()
          self.setupUi(self)
          self.init()
    
        def init(self):
          # 打开按钮
          self.bt_start.clicked.connect(self.mqtt_start_bt)
          # 关闭按钮
          self.bt_close.clicked.connect(self.mqtt_close_bt)
    
        def mqtt_start_bt(self):
          self.bt_start.setEnabled(False)
    
        def mqtt_close_bt(self):
          self.textBrowser.setText("")
    
    • lineEdit

    获取文本

    theme = self.lineEdit_theme.text()
    

    限制输入信息

            #设置浮点数限制 范围0~86400,小数点1位
            LE2Validator = QDoubleValidator(self)
            LE2Validator.setRange(0, 86400)
            LE2Validator.setNotation(QDoubleValidator.StandardNotation)
            LE2Validator.setDecimals(1)
            self.lineEdit_2.setValidator(LE2Validator)
    
            # 限制为数字和字符
            reg = QRegExp("[a-zA-Z0-9]+$")
            LE1Validator = QRegExpValidator(self)
            LE1Validator.setRegExp(reg)
            self.lineEdit.setValidator(LE1Validator)
    
    • 退出窗体时关闭所有线程
    #重构退出函数
    def closeEvent(self,event):
          sys.exit(app.exec_())
    

    相关文章

      网友评论

          本文标题:PyQt5使用笔记

          本文链接:https://www.haomeiwen.com/subject/viflaqtx.html