zoukankan      html  css  js  c++  java
  • 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

      

      

     

  • 相关阅读:
    Android应用开发SharedPreferences存储数据的使用方法
    Android ListView不响应OnItemClickListener解决办法
    Java 毫秒转换为日期类型、日期转换为毫秒
    关于android软键盘enter键的替换与事件监听
    如何使用adb命令查看android中的数据库
    android坐标
    getHitRect获取点击控件的位置
    UTC的相互转换(java)
    深入理解Android的startservice和bindservice
    TS格式解析
  • 原文地址:https://www.cnblogs.com/Pio-GD/p/14350857.html
Copyright © 2011-2022 走看看