当前位置: 首页 > news >正文

PyQt中QFrame窗口中的组件不显示的原因

文章目录

  • 问题代码(例)
  • 原因和解决方法

问题代码(例)

from PyQt5.QtWidgets import *
from PyQt5.QtGui import QFont, QIcon, QCursor, QPixmap
import sysclass FrameToplevel(QFrame):def __init__(self, parent=None):super().__init__(parent)self.setFrameStyle(QFrame.Panel | QFrame.Sunken)self.setLineWidth(6)self.setMidLineWidth(10)self.setStyleSheet('background-color: #0098de;')class MainWindow(QMainWindow):def __init__(self):super().__init__()self.resize(750, 610)# 自定义鼠标self.setCursor(QCursor(QPixmap('mouse.png').scaled(30, 30), 0, 0))# frame窗口边的宽度self.frameWidth = 3self.setup_ui()# 设置主窗口组件def setup_ui(self):# 设置“录入信息”按钮button = QPushButton(self)button.setText('按钮')button.move(100, 100)button.resize(100, 100)button.clicked.connect(self.window_enter_modify)# 设置顶层frame窗口self.frameToplevel = FrameToplevel(self)self.frameToplevel.move(220, 100)self.frameToplevel.resize(520, 500)# 录入和修改功能执行窗口def window_enter_modify(self):# 设置姓名标签以及输入框Label = QLabel(self.frameToplevel)Label.setText('测试代码')Label.move(100, 100)print(1)if __name__ == '__main__':app = QApplication(sys.argv)mainwindow = MainWindow()# 创建font字体font_textEdit = QFont('宋体', 11)mainwindow.show()sys.exit(app.exec_())

运行结果:

在这里插入图片描述
在这里插入图片描述

如以上运行结果所示,点击按钮后,按钮连接的槽函数开始运行,控制台打印结果,但是Frame窗口上并未出现Label标签。

原因和解决方法

原因是:在构建QFrame窗体时就已经写入了窗体可视化,窗口在创建后直接被绘制,使得后面的组件放置后不可见。

解决方法:

  1. 在创建窗体的后隐藏窗体,在组件全部构建完成后添加回来。
    # 设置主窗口组件def setup_ui(self):# 设置“录入信息”按钮button = QPushButton(self)button.setText('按钮')button.move(100, 100)button.resize(100, 100)button.clicked.connect(self.window_enter_modify)# 设置顶层frame窗口self.frameToplevel = FrameToplevel(self)self.frameToplevel.move(220, 100)self.frameToplevel.resize(520, 500)self.frameToplevel.hide()	# 隐藏Frame窗体# 录入和修改功能执行窗口def window_enter_modify(self):# 设置姓名标签以及输入框Label = QLabel(self.frameToplevel)Label.setText('测试代码')Label.move(100, 100)self.frameToplevel.show()print(1)

运行结果:
点击按钮后出现Frame窗体

在这里插入图片描述

  1. 在槽函数中实现Frame窗口的创建,在组件创建完成后调用show()方法展示窗体。
    # 录入和修改功能执行窗口def window_enter_modify(self):# 设置顶层frame窗口self.frameToplevel = FrameToplevel(self)self.frameToplevel.move(220, 100)self.frameToplevel.resize(520, 500)self.frameToplevel.hide()# 设置姓名标签以及输入框Label = QLabel(self.frameToplevel)Label.setText('测试代码')Label.move(100, 100)self.frameToplevel.show()print(1)

运行结果:

在这里插入图片描述

http://www.lryc.cn/news/229240.html

相关文章:

  • git 命令行回退版本
  • IntelliJ IDEA 安装 GitHub Copilot插件 (最新)
  • viewpage选择器
  • vue中如何将json数组指定的key赋值给el-form-item并均匀的分成2列
  • 笔记本分屏怎么操作?3个方法提高工作效率!
  • Android 使用poi生成Excel ,word并保存在指定路径内
  • 嵌入式杂记 -- MCU的大小端模式
  • 对这套BI零售数据分析方案心动,是零售人天性
  • vuekeyclock 集成
  • ARM Linux 基础学习 / 配置交叉编译工具链 / 编译 Linux 应用和驱动 / 编译内核
  • 通讯协议学习之路(实践部分):SPI开发实践
  • 【系统安装】ubuntu20.04启动盘制作,正经教程,小白安装教程,百分百成功安装
  • 2023云计算发展趋势
  • C# .NET Core API Controller以及辅助专案
  • asp.net图书管理系统
  • 概念解析 | LoRA:低秩矩阵分解在神经网络微调中的作用
  • 前端---CSS的盒模型
  • Linux可以投屏到电视吗?用网页浏览器就能投屏到电视!
  • 云汇优想:抖音矩阵系统有哪些类型?
  • XSS 漏洞的理解
  • cocosCreator 之内存管理和释放
  • 飞天使-template模版相关知识
  • 一、Hadoop3.1.3集群搭建
  • QML16、从 C++ 定义 QML 类型
  • 【中间件篇-Redis缓存数据库06】Redis主从复制/哨兵 高并发高可用
  • LeetCode(12)时间插入、删除和获取随机元素【数组/字符串】【中等】
  • 前端面试题 计算机网络
  • windows aseprite编译指南(白嫖)
  • 生活污水处理一体化处理设备有哪些
  • JSON可视化管理工具JSON Hero