美文网首页
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