holic512 2023-05-25 19:57 采纳率: 77.8%
浏览 27
已结题

pyqt6的uic调用ui 父窗口widget的布局未生效



import sys
from qtpy.QtWidgets import QApplication, QMainWindow
from qtpy import uic
from qtpy.QtNetwork import QTcpServer

Ui_MainWindow, _ = uic.loadUiType("form.ui")

class MyWindow(QMainWindow, Ui_MainWindow):
    def __init__(self):
        super().__init__()
        Ui_MainWindow.__init__(self)
        self.setupUi(self)


if __name__ == '__main__':

    app = QApplication(sys.argv)
    window = MyWindow()
    window.show()
    sys.exit(app.exec())


代码是这个样子的 ui布局是

img


实际应用是

img

不清楚问题出在哪里 第一次使用qtpy 一定要通过代码实现布局吗
求解答

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-05-25 22:05
    关注
    • 文章:PyQt5 设置QWidget窗口背景图片问题 中也许有你想要的答案,请看下吧
    • 除此之外, 这篇博客: 【PyQT5 最全学习笔记】:第二节 QWidget类 窗口创建、大小设置及内容边距等API及用法实例中的 2.4 实例二:创建具有规则排列的多个子控件窗口 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
    • 要求:

      1、创建一个窗口, 设置尺寸为500 x 500, 位置为 300, 300
      2、通过给定的的个数, 在该窗口内创建相应个数的子控件
      3、 给定一列子控件的个数,让所有子控件在窗口均匀排列
      4、假设有50个子控件,一列排4个

      代码:

      window2 = QWidget()
      window2.resize(500, 500)
      window2.move(300, 300)
      # 先让父窗口显示,这样计算出来的width 和 height才准确
      window2.show()
      
      # 总的控件个数
      widget_count = 50
      # 一行有多少列
      column_count = 4
      
      # 计算一个控件的宽度
      widget_width = window2.width() / column_count
      # 总共有多少行 (编号 // 一行多少列 + 1)
      row_count = (widget_count -1) // column_count + 1
      # 计算一个控件的高度
      widget_height = window2.height() / row_count
      
      # 创建控件,并设置每个控件的位置
      for i in range(0, widget_count):
          w = QWidget(window2)
          # 设置子控件大小
          w.resize(widget_width, widget_height)
          # 设置子控件坐标
          widget_x = i % column_count * widget_width
          widget_y = i // column_count * widget_height
          w.move(widget_x, widget_y)
          # 设定子控件背景颜色及边框颜色
          w.setStyleSheet("background-color: red;border: 1px solid yellow;")
          # 显示子控件,因父控件已显示(已绘制),如不手动设置子控件显示,将看不到子控件
          w.show()
      

      解析:
      1、这里注意父窗口的show()方法使用的位置及让每个子控件再调用show()方法的意义。
      2、注意子控件需排列的行数计算方法。

      效果图:

      在这里插入图片描述

    • 您还可以看一下 闫鄂生老师的Python UI编程PyQt程序设计课程中的 QWidget类小节, 巩固相关知识点
    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 5月30日
  • 创建了问题 5月25日

悬赏问题

  • ¥15 如何让企业微信机器人实现消息汇总整合
  • ¥50 关于#ui#的问题:做yolov8的ui界面出现的问题
  • ¥15 如何用Python爬取各高校教师公开的教育和工作经历
  • ¥15 TLE9879QXA40 电机驱动
  • ¥20 对于工程问题的非线性数学模型进行线性化
  • ¥15 Mirare PLUS 进行密钥认证?(详解)
  • ¥15 物体双站RCS和其组成阵列后的双站RCS关系验证
  • ¥20 想用ollama做一个自己的AI数据库
  • ¥15 关于qualoth编辑及缝合服装领子的问题解决方案探寻
  • ¥15 请问怎么才能复现这样的图呀