介绍
这篇文章给大家分享的是有关PyQt5实现相对布局管理的方法的内容。小编觉得挺实用的,因此分享给大家做个参考。一起跟随小编过来看看吧。
博主PyQt5新手,最近在写一个可视化展示界面,第一个遇到的坑就是布局管理。
其实可以不用相对布的局,直接用QtDesigner进行傻瓜式的拖控件也不是不可以,高级一点,也可以用绝对布的局,定义控件的绝对位置,就可以避免踏入这个坑了。
但是,还是建议大家,尤其是新手使用相对布的局,一个感受,就是相对布局美观整齐,控件不会乱。
如果大家完全初学,建议大家买本书看,看我发现网上能搜到的关于PyQt5教程都是从书上来的,而且网上的教程都是书本的搬运工,少有自己的思考,比如如何活用布的局,也就是这篇博文要解决的内容。建议大家看看《PyQt5快速开发与实战这本书》,总体不错,博主的很多解决方案都是从这本书上来。
下面是编译环境:
- <李> python3.7,编译器是pycharm,特别说明,不要用世爵,如果只是常规的控件用世爵没啥问题,但是如果你用了QWebEngineView,会让你崩溃到怀疑人生,遇到的问题无法解决,一度想要从入门到放弃。博主也是从matlab过来的,大爱世爵的编译风格,但是建议还是趁早换了,pycharm的代码自动填充功能不要太爽,李> <李>要实现的功能:设置两排横向的按钮,一个网页展示区,和网页并排展示的文本框用来展示数据,展示效果如下:李>
常规包导入
。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实现相对布局管理的方法