PyQt报错:界面显示不全,QLayout: Attempting to add QLayout ““ to MyDesiger “Form“, which already has a layout

PyQt5学习:Qtdesigner设计转换而来的界面.py文件与 2k等高分辨率屏幕不匹配或自适应问题,导致部分控件显示不完全解决办法 1.软件环境 Python3.7 PyQt5 5.13.0 2.问题和预览截图 如下图1,在把Qtdesigner设计的界面.ui文件转换为.py文件再调用时按钮的文字显示不完全,而且界面有比在Qtdesigner预览时小了很多。(注:我测试的是Mainwindow窗口类型,Widget的Form窗口类型解决办法也一样) (图1) 测试代码 # -*- coding: utf-8 -*- # Form implementa... 阅读详情


一个折磨半天没有头绪的问题:
界面显示不全,而且报错 QLayout: Attempting to add QLayout "" to MyDesiger "Form", which already has a layout

1. 问题和解决

在一次将无 layout 的主界面UI修改配置为GridLayout等多种 layout 组成的新界面,再调用之后出现错误,而且界面显示不完整。

在搜查了各种相关问题之后,没有找到一个可行的方案,好在最后缕清思路尝试了一下,修改父类,即将QMainWindow改为QWidget之后得以解决!

在这里插入图片描述

2. 原因分析

原因是抄代码不认真造成的,别人将QMainWindow作为继承对象是因为它的界面新建的时候就选的Main Window(而我当时选的是Widget)
在这里插入图片描述
那为什么之前我使用QMainWindow,但并不报错呢?很大原因可能是默认的Qwidget布局可以兼容QMainWindow的布局,但当是自己自定义而不是使用默认的布局时,就产生了错误:
在这里插入图片描述
说它已经有了一个layout!

参考:

  1. stackoverflow
  2. How can I get rid of the previous layout and set new Grid Layout in QMainWindow?
  3. Python + PyQt,子窗口布局出错的一种解决办法
Qt5与PyQt5UI设计界面出现控件文字显示不完全的问题 应该有不少人遇到过这种情况,在Qt5或PyQt5的设计师界面中拖拽控件编辑文本内容后,再运行就会出现显示不全的问题,如下图所示: 可以看到添加的按钮和Label控件在设计界面上显示是正常的,但是运行后就显示不完全了。虽然这种问题可以通过手动拉大控件或者采用布局来解决,但总归是很麻烦的。后来在网上找了发现原来是Qt不能自适应高清屏幕的原因,现在很多电脑都是至少1080高清的屏幕了,所以为了桌面图... 阅读详情

相关推荐

翻翻源码,解决Qt程序问题QLayout: Attempting to add QLayout ““ to xxxx ““, which already has a layout

其他Layout对象如果new的时候指定了父窗口的this作为parent,中间你却在子Widget中setLayout(xxlayout对象),那么Qt就会警告你,父窗口已经有主Layout了,你的代码中还尝试添加一个或多个主Layout,因为这些Layout的this指向了父窗口,但你却用在子窗口上去了。那么结论来了,既然出现错误(警告)之后,Qt框架自身会设置对象的parent为空,也就是说,在我们的代码中,某个地方将layout的parent设置成了别的对象,或是this,或是对象指针。

有问题或资源连接有缺失的可以私信公众号新潮看世界获取 676

pyqt5 界面在不同分辨率下显示不完整,不全问题

pyqt5 界面在不同分辨率下显示不完整,不全问题。

Android__An的博客 3584

Linux系统安装AutoDockTools、AutoGrid和AutoDock并实现分子对接(详细讲解)

linux系统为centos7.0 按照下面操作安装AutoDockTools(MGLTools) 1. 下载安装包,链接(https://ccsb.scripps.edu/mgltools/downloads/),我的linux系统是64位,下载红色标记源代码,拷贝入linux目标文件夹下。 2. shell终端进行安装: 1. 终端进入安装包所在文件夹,并获取root权限;赋予代码安装权限; cd /home/... #目标文件夹,根据目标程序文件位置进行更改 su #获

carlos_zhao的博客 1万+

报错18:28:21: Debugging starts QLayout: Attempting to add QLayout ““ to MainWindow “MainWindow“, which

18:28:21: Debugging starts QLayout: Attempting to add QLayout “” to MainWindow “MainWindow”, which already has a layout

老王001的博客 349

从工艺到器件:用Silvaco ATLAS仿真PIN二极管击穿电压的保姆级指南

本文详细介绍了使用Silvaco ATLAS仿真PIN二极管击穿电压的全流程指南,从工艺仿真基础搭建到器件结构构建,再到击穿特性仿真和结果分析。通过Silvaco工具链,工程师可以在设计阶段精准预测器件性能,优化击穿电压,提升研发效率。

weixin_34259816的博客 355

【SAP HANA 24】HANA与Oracle SQL语法对照表

HANA SQL参考及Oracle 语法对照

探索 Java 编程的技巧、最佳实践和解决方案。本博客提供针对 Java 开发者的实用指南,涵盖从基础到高级话题,旨在提升编程效率和技能。 1422

重复布局QWidget::setLayout: Attempting to set QLayout ““ on QWidget “centralwidget“, which already has a

重复布局,导致控件挤成一堆 QWidget::setLayout: Attempting to set QLayout "" on QWidget "centralwidget", which already has a layout

qq_51771954的博客 1339

Android 9.0 系统framework关于忘记开机锁屏密码进不去系统桌面清除锁屏密码问题的解决

在9.0的系统rom定制化开发中,在一些产品中带锁屏密码的功能中,系统默认是滑动解锁,但是客户会设置锁屏密码,在某些时候会 忘掉锁屏密码,导致需要进入恢复出厂设置然后才能进入系统桌面,这样就导致系统的保存的资料都丢失了,所以需要要求提供接口 在下拉状态栏中或者系统服务中在忘记锁屏密码后不恢复出厂设置的情况下,可以清除锁屏密码,接下来就来实现功能

安卓兼职framework和app工程师的博客 615

QT 提示 QLayout: Attempting to add QLayout ““ to Widget “Widget“, which already has a layout

QT 提示 QLayout: Attempting add QLayout to Widget "Widget", which already has a layout

qq_47500842的博客 1570

基于YOLOv8的工业瓷砖缺陷检测:深度学习与UI界面的应用

本文详细介绍了如何使用YOLOv8进行工业瓷砖缺陷检测,并结合图形用户界面(UI)提供了完整的实现方案。通过YOLOv8模型,我们可以高效、精确地检测瓷砖图像中的缺陷,显著提高生产过程中的质量控制水平。随着数据集的进一步扩展和YOLOv8模型的不断优化,未来瓷砖缺陷检测的精度和速度将不断提高。此外,基于深度学习的缺陷检测技术不仅可以应用于瓷砖生产,还可以推广到其他领域的质量检测中。

YOLO 604

Android 17为什么会重写MessageQueue

DeliQueue 通过消除 MessageQueue 中的锁,提升了系统和应用的性能。合成基准测试: 得益于并发能力的提升(Treiber 栈)和更快的插入速度(最小堆),向繁忙队列进行多线程插入的速度比传统 MessageQueue 快了高达 5000 倍。Perfetto 追踪分析: 在从内部测试人员处获取的 Perfetto 追踪记录中,我们看到应用主线程在锁竞争上消耗的时间减少了 15%。

xiangzhihong8的专栏 269

QLayout: Attempting to add QLayout ““ to MainWindow ““, which already has a layout

文章目录一、问题二、解决办法 一、问题 qt运行时,会报如下提示: QLayout: Attempting to add QLayout “” to MainWindow “”, which already has a layout 研究了下面这篇文章的方法,发现自己就是这样做的,还是会报如上错。 参考连接:QLayout: Attempting to add QLayout “” to MainWindow “”, which already has a layout 二、解决办法 创建layout

永不止步的博客 3302

EMB电子机械制动系统和EHB电子液压制动系统控制功能的对比

EMB电子机械制动系统相比EHB液压制动系统具有显著优势:响应速度更快(<100ms)、控制精度更高(±2N·m)、能实现单轮独立控制,支持0.1%级制动力调节。在ABS、ESC等安全功能上表现更优,制动平顺性和NVH性能更好,同时提升能量回收效率15%-20%。特别适合智能驾驶需求,可使AEB等系统响应时间缩短50ms,紧急制动距离减少1米以上。EMB系统完美契合高阶自动驾驶对快速响应和精准控制的要求。

m0_59012156的博客 885

【QT】QLayout: Attempting to add QLayout “to ***“, which already has a layout的终极解决方法

问题 最近在捣鼓QT的时候,经常遇到Qlayout布局不成功的问题,提示是要设置的部件已经有布局了。 如字面意思,这种情况就是多次设置布局引起的,那么如何解决呢? 原因以及解决方法 代码性重复设置 第一种可能就是你自己在写代码的时候重复设置了layout,有以下两种情况 1. 初始化时指定了父窗口,最后又显式调用setLayout函数 //首先创建布局的时候就指定了父窗口,那么你的部件在这里就被设置了一次布局 QVBoxLayout * lay = new QVBoxLayout(this)

逐梦 1万+

PCIe协议之 Equalization篇 之 谈谈几种模式

对于两端有能力最高支持 32 GT/s 及以上速率的设备,如果把目标速度设置为 8 GT/s 或 16 GT/s 速率,是不建议采用 Bypass-Equalization-to-Highest-Rate 模式的,即便采用了,也不会针对 8 GT/s 或 16 GT/s 的目标速率进行 EQ。对于支持 32 GT/s 及以上速率的设备,其可能根本无需工作在 8 GT/s 或 16 GT/s 速率,这时再针对 8 GT/s 或 16 GT/s 速率进行 EQ,多少有点浪费。

那么菜的博客 562

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

qt QLayout: Attempting to add QLayout "" to MainWindow "", which already has a layout. 错误

当使用qt布局时候出现错误 QLayout: Attempting to add QLayout "" to MainWindow "", which already has a layout.  的时候,处理方法如下: QWidget *widget = new QWidget();//新添加的内容 创建一个QWidget实例 this->setCentral

aru123 1万+

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

Python + PyQt,子窗口布局出错的一种解决办法 (Attempting to add QLayout "" to XXX "XXX", which already has a layout)

之前用PyQt写了个图形界面,其中实现了一个子窗口,结果发现运行的时候这个对话框原本的布局出错了,所有空间挤在一坨, 并且控制台报错: QLayout: Attempting to add QLayout "" to XXX "XXX", which already has a layout 出现这个问题是因为在一个控件上同时添加了两个布局 原因是我QtDesigner中绘制...

Hare_MNK的博客 1865

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

QLayout: Attempting to add QLayout "" to xxx "xxxx", which already has a layout

                                 &n...

Bryan_QAQ的博客 5534

QWidget::setLayout: Attempting to set QLayout "" on MainWindow "", which already has a layout

关于在Qmainwindow中添加Qwidget的时候会出现以上错误,解决办法。       vb->addLayout(hb); vb->addLayout(hb1); vb->setContentsMargins(5,10,5,8); QWidget* widget = new QWidget(this); widget->setLayout(vb);

黑塞的博客 4109

遇到QWidget::setLayout: Attempting to set QLayout ““ on MainWindow ““, which already has a layout问题

Pyqt遇到登录窗口时遇到上述问题

qq_59558672的博客 1076

Qt——QLayout: Attempting to add QLayout ““ to XXX““, which already has a layout

是有不同的区域的(主要区域,tool区,dock区,status区)。那么我就可以先用一个。言下之意是 已经存在一个布局了,不能再创建新的布局。我在编写如下的 demo 时,运行代码产生了问题。通过 Google 之后发现,由于我的基类是。设置到想要设置布局的区域,比如。

感觉画质不如...原神的博客 1809

解决qt5安装后界面显示不全(已成功)

安装完qt5后显示如下 解决方案 在工具→选项→环境中将Enable high DPI scaling选项取消勾选,然后选择OK退出,重启Qt Creator即可。

qq_39478139的博客 2670

PyQt5解决按钮文字显示不全等问题(利用屏幕的自适应设置)

如果不加这行代码,相同的界面在不同的界面中显示不同的大小,不协调,加入此行代码后可以实现屏幕的自适应调整,使得界面的大小在不同的电脑中效果与设置的类似。

知识搬运者 1601

QLayout: Attempting to add QLayout "" to MainWindow "Main_Widget", which already has a layout pyqt5这...

这个报错表明你在试图向一个已经有布局的MainWindow部件 "Main_Widget" 添加另一个布局。 在PyQt5中,一个部件只能有一个布局。所以如果你已经给MainWindow设置了布局,就不能再添加另一个布局了。 解决方案是: 删除原来的布局 把新的布局添加到MainWindow中 把你要添加的部件添加到新的布局中。 代码示例: main_widget = QMainWindow(...

weixin_35755434的博客 892

QT运行程序提示QLayout: Attempting to add QLayout ““ to * ““, which already has a layout,原因分析及解决方案

QLayout: Attempting to add QLayout "" to FileDownload "", which already has a layout 翻译过来就是:QLayout:正在尝试将QLayout“”添加到已具有布局的FileDownload“” 原因:因为一个QWidget的对象只能设置一个布局QLayout,`不能设置多个布局`

qq_44667165的博客 8253

PyQt屏幕的自适应设置,解决按钮文字显示不全等问题

如果不加这行代码,相同的界面在不同的界面中显示不同的大小,不协调,加入此行代码后可以实现屏幕的自适应调整,使得界面的大小在不同的电脑中效果与设置的类似。

有塔耶奥多的专栏 2443
上一篇: Sqlite 报错:sqlite3.OperationalError: no such table: images
下一篇: PyQt:创建自适应大小的窗口(保姆级采坑经验)
Robin_Pi
博客等级 码龄9年 2万+粉丝 632原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值