python Qt图形界面编程

  • 网站http://www.python3.vip/tut/py/gui/qt_09/
  • Tkinter、wxPython、PySide2、PyQt5
  • 按住Ctrl拖动控件,直接复制
  •  layout
    • sizepolicy控件大小
    • 按住Ctrl键拖动就是复制
    • 调整layout中控件的大小比例,优先使用layout的layoutStrentch属性来控制
    • 把控件挤小,可使用horizontal spacer
  • 制作应用程序,使用pyinstall,在python进阶,制作可执行文件
    • build,dist
    • 注意运行的时候,因为代码中有导入ui文件,因此需要把导入的ui文件拷贝到生成的可执行文件中,httpclient.ui
    • 命令行中运行pyinstall httpclient.py --noconsole --hidden-import PySide2.QtXml,其中--noconsole指运行exe时不出现命令行,如果要测试,可以去掉,出现的错误会在命令行中出现。--hidden-import PySide2.QtXml是因为这个QtXml库是动态导入,需要我们告诉PyInstaller
    • # 添加主窗口图标(打开EXE之后左上角显示的图标
      # from PySide2.QtGui import QIcon
      #
      # app = QApplication([])
      # # 加载icon
      # app.setWindowIcon(QIcon('logo.png'))
      
      # 应用程序图标,打包成的exe文件的图标
      # 制作程序的时候,写上
      # pyinstaller httpclient.py --noconsole --hidden-import PySide2.QtXml --icon="logo.ico"
      # 注意参数一定是.ico文件,不能使png等图片文件,可以通过在线的png转ico文件网站,生成ico
      # 比如https://www.zamzar.com/convert/png-to-ico/或者https://www.easyicon.net/covert/
  • 单选框
    • 同一组的按钮,Ctrl多选右键button group建立新的按钮组
  • tab页中布局
    • tab widget中的tab布局,直接右键是没有layout选项的,要在他右上角的对象的框 的上层tabwidget右键才有layout
  • 显示样式
    • 参考http://www.python3.vip/tut/py/gui/qt_09/
    • QSS类似于CSS,
    • 根据object(ID)修改,语言加#,根据class选不加
    • 选中最上mainwindow,下面属性中有个stylesheet,点一下,选三个点,输入样式代码
    • selector,与webcss的语法基本没区别。
    • python Qt图形界面编程_第1张图片
    •  字体font-family,大小font-size,颜色color
    •  qt修改style之后有个bug,得去掉style代码之后,重新输入正确的
    • flat勾选之后,按钮的边框就不见了
    • 可以自己加动态属性,在property下面的框选加号,一般选string,然后选择性的控制部分控件的style
    • 修改某控件内部,比如tabwidget的内容的字体颜色,#tabWidget * {\n    color:red\n}
      • 若只修改直接子节点的style,则#tabWidget > * {}
      • 空格是内部的所有
    • 调色,alpha通道是调透明度
    • Pseudo-States伪状态
      • QPushButton:hover {color: red} hover悬浮,鼠标放到此位置时变化
      • disable状态,:disabled
      • 鼠标悬浮并且处于勾选checked状态,:hover:checked
      • QPushButton:hover{

        font-family:微软雅黑;

        font-size:15px;

        color: #1d649c;

        }

    • 指定背景色,background-color,背景图片background-image

    • 边框

    • 间隔,对外的margin四个就上右下左,顺时针,从上开始,也可margin-top,元素内容到内边框的边界为padding

    • 优先级
      • 越靠近的style优先级越高,可直接针对对象修改style
      • 样式官方文档https://doc.qt.io/qt-5/stylesheet-reference.html#list-of-properties
    • 多线程后台任务
      • 遇到较耗时的任务时,最好创建新的子线程去执行,避免主线程阻塞
      • 把要实现的功能做成函数,然后t = Thread(target=run)    t.start()
    • 第三方画图控件plotwidget载入,https://www.bilibili.com/video/av78483752?p=3
      • 用widget占个位,右键promote,提升类,类名即PlotWidget,头文件为其所在的库,即from 头文件 import PlotWidget
      • 注意没有core,图中仅举例python Qt图形界面编程_第2张图片
    • 导入文件(即load)时,pyside2要比pyqt5多个注册,即在loader.load(“main.ui”)前loader.registerCustomWidget(pg.PlotWidget)。即要把PlotWidget从哪儿来的要注册一下
    •  轴刻度为字符串功能,获取鼠标所在处刻度值
      • http://www.python3.vip/tut/py/gui/pyqtgraph-2/
    • 内嵌web浏览器
      •  
    •  将ui文件转换为python代码,pycharm中选中ui文件,最上栏tools-external tools选择pyUIC,即完成
    •  
    •  
    •  
    •  
    •  
    •  
    •  
    •  
    •  
    •  
    •  
    •  
    •  

你可能感兴趣的:(python)