PyQt5实现相对布局管理的方法

  介绍

这篇文章给大家分享的是有关PyQt5实现相对布局管理的方法的内容。小编觉得挺实用的,因此分享给大家做个参考。一起跟随小编过来看看吧。

博主PyQt5新手,最近在写一个可视化展示界面,第一个遇到的坑就是布局管理。

其实可以不用相对布的局,直接用QtDesigner进行傻瓜式的拖控件也不是不可以,高级一点,也可以用绝对布的局,定义控件的绝对位置,就可以避免踏入这个坑了。

但是,还是建议大家,尤其是新手使用相对布的局,一个感受,就是相对布局美观整齐,控件不会乱。

如果大家完全初学,建议大家买本书看,看我发现网上能搜到的关于PyQt5教程都是从书上来的,而且网上的教程都是书本的搬运工,少有自己的思考,比如如何活用布的局,也就是这篇博文要解决的内容。建议大家看看《PyQt5快速开发与实战这本书》,总体不错,博主的很多解决方案都是从这本书上来。
下面是编译环境:

    <李> python3.7,编译器是pycharm,特别说明,不要用世爵,如果只是常规的控件用世爵没啥问题,但是如果你用了QWebEngineView,会让你崩溃到怀疑人生,遇到的问题无法解决,一度想要从入门到放弃。博主也是从matlab过来的,大爱世爵的编译风格,但是建议还是趁早换了,pycharm的代码自动填充功能不要太爽,李 <李>要实现的功能:设置两排横向的按钮,一个网页展示区,和网页并排展示的文本框用来展示数据,展示效果如下:

 PyQt5实现相对布局管理的方法

常规包导入

。QtWidgets进口*
  从PyQt5。QtWebEngineWidgets进口QWebEngineView
  从PyQt5。QtCore进口Qt, QUrl
  进口sys 

QWebEngineView是用来展示百度首页的,用世爵编译的话,一直会报,错报错如下:
QtWebEngineWidgets之前必须进口QCoreApplication实例创建

编写初始化函数,代码如下:

类MyWindow (QWidget):
  
  def __init__(自我):
  超级(MyWindow自我). __init__ ()
  self.setWindowTitle(& # 39;嵌套布局示例& # 39;)
  自我。调整(1000、800)
  自我。浏览器=QWebEngineView(自我)# 1
  自我。文本编辑=QTextEdit(自我)# 2
  self.browser_init () # 3
  self.layout_init () # 4
  # 1定义一个浏览器控件
# 2定义一个文本编辑框,个人用于展示网页显示的数据
# 3初始化浏览器设置
# 4布局设置

不说废话,直接上代码

 def layout_init(自我):
  
  #全局部件(注意参数自我),用于“承载“全局布的局
  wwg=QWidget(自我)
  
  
  
  #全局布局(注意参数wwg)
  王=QVBoxLayout (wwg)
  hlayout1=QHBoxLayout ()
  hlayout2=QHBoxLayout ()
  hlayout3=QHBoxLayout ()
  # vlayout=QVBoxLayout ()
  # glayout=QGridLayout ()
  # formlayout=QFormLayout ()
  
  #局部布局添加部件(例如:按钮)
  hlayout1.setSpacing (0)
  # hlayout1.addStretch (1)
  hlayout1。addWidget (QPushButton (str (1)))
  # hlayout1.addStretch (1)
  hlayout1。addWidget (QPushButton (str (2)))
  # hlayout1.addStretch (1)
  hlayout1。addWidget (QPushButton (str (3)))
  # hlayout1.addStretch (1)
  hlayout1。addWidget (QPushButton (str (4)))
  # hlayout1.addStretch (1)
  
  hlayout2.addStretch (1)
  hlayout2。addWidget (QPushButton (str (1)))
  hlayout2.addStretch (1)
  hlayout2。addWidget (QPushButton (str (2)))
  hlayout2.addStretch (1)
  hlayout2。addWidget (QPushButton (str (3)))
  hlayout2.addStretch (1)
  hlayout2。addWidget (QPushButton (str (4)))
  hlayout2.addStretch (1)
  
  # hlayout3.addStretch (1)
  hlayout3.setSpacing (0)
  hlayout3.addWidget (self.browser)
  # hlayout3.addStretch (1)
  hlayout3.addWidget (self.textEdit)
  # hlayout3.addStretch (1)
  
  # self.setLayout (hlayout)
  # vlayout。addWidget (QPushButton (str (3)))
  # vlayout。addWidget (QPushButton (str (4)))
  # glayout。addWidget (QPushButton (str (5)), 0, 0)
  # glayout。addWidget (QPushButton (str (6)), 0, 1)
  # glayout。addWidget (QPushButton (str (7)), 1, 0)
  # glayout。addWidget (QPushButton (str (8)), 1, 1)
  # formlayout。addWidget (QPushButton (str (9)))
  # formlayout。addWidget (QPushButton (str (10)))
  # formlayout。addWidget (QPushButton (str (11)))
  # formlayout。addWidget (QPushButton (str (12)))
  
  #这里向局部布局内添加部件,将他加到全局布的局
  wl.addLayout (hlayout1)
  wl.addLayout (hlayout2)
  wl.addLayout (hlayout3)
  # wl.addLayout (vlayout)
  # wl.addLayout (glayout)
  # wl.addLayout (formlayout)
  
  self.setLayout (wl) 

PyQt5实现相对布局管理的方法