• PyQt5开发上位机


    记录使用PyQt5写上位机的过程

    安装

    pip install PyQt5
    pip install PyQt5-tools

    安装tools是为了使用Qt-Designer(允许使用屏幕窗体和简单的拖放界面设计小部件、对话框或完整的主窗口)

    在...PythonPython37Libsite-packagesqt5_applicationsQtin 目录下可以找到 designer.exe 


    使用 Qt-Designer:

    参考文章

    打开designer.exe,创建widget类对象,拖动摆放控件,做出初始界面(并固定窗口大小),保存成 .ui 文件

    生成UI初始化代码

    运行命令  pyuic5 -o xxx.py xxx.ui  生成 xxx.py文件,里面有UI的初始化代码

     

    引用初始化代码来生成窗口:

    from PyQt5.QtWidgets import QWidget
    from xxx import Ui_widget
    
    class Upper(QWidget, Ui_widget):    
        def __init__(self):
            super(QWidget, self).__init__()
            self.setupUi(self)
            self.show() 
    if __name__ == '__main__':
        app = QApplication(sys.argv)
        ex = Upper()
        sys.exit(app.exec_())

    之后再自定义控件的属性、动作、信号等,这样就简化了很多布局控件的工作


    多线程实现:

    '''定义子线程'''
    class thread_1(QThread):
        beam_signal = pyqtSignal(str)    #定义信号
        kill_flag = True    #采用标志位方便结束死循环子线程
        def __init__(self):
            super(thread_1, self).__init__()
        '''实现run方法,线程开启后自动执行该方法'''    
        def run(self):
            while self.kill_flag:
                self.mechine_signal.emit('xxxxx')    #信号发射
    
    class Upper(QWidget, Ui_widget):    
        def __init__(self):        
            super(QWidget, self).__init__()
            self.notice1 = thread_1()    # 创建子线程实例
            self.notice1.beam_signal.connect(self.display)    #将信号连接到槽
            self.notice1.start()  #开启子线程
    
        def display(self, msg: str=''):
            self.textBrowser.setText(msg)
    
    # 要结束该子线程,将 kill_flag 置为 False

      

      

     

  • 相关阅读:
    走进AngularJs(一)angular基本概念的认识与实战
    Android开发:关于WebView
    Mysql 命令大全
    gitHub
    jquery 使用方法
    JS:offsetWidthoffsetleft 等图文解释
    offsetHeight, clientHeight与scrollHeight的区别
    Angular学习-指令入门
    jQuery学习笔记(一):入门
    JACASCRIPT--的奇技技巧的44招
  • 原文地址:https://www.cnblogs.com/Pio-GD/p/14350857.html
Copyright © 2020-2023  润新知