插入自定义控件

Warning: 在自定义控件这一块中,pyside2的转换ui文件特别智障,建议认真检查!

由于我们要写的是图形学软件,这里以画布为例,选择Frame为父类,我们来重载它

首先创建一个自己的类,在项目文件夹下创建一个your_frame_name.py文件,这里我们的文件名姑且就叫drawFrame.py:

from PySide2.QtWidgets import QFrame
class DrawFrame(QFrame):def __init__(self, parent=None):QFrame.__init__(self,parent) # 调用父类的init方法,注意:不要写成super的形式# 在Python中子类要调用父类的方法就务必要加上self传进去# 与·对象·调用函数方法相区别,对象调用函数时将自动将自己的·self·隐式传入# 分类感悟:很多时候并不是 因为两个类多么相似而继承于同一父类,而是因为这两个类可以被同一个函数方法调用
题外话:在自定义控件/插入控件中,最关键的是要理解继承的概念,每一个窗口都是相对于父窗口而存在的,否则就是独立窗口。因此,在插入一个控件时,务必要指明他的父窗口,否则空间将独立出来成为一个新的窗口。

可以看到该类继承于父类QFrame,想要让他显示我们绘制的一些图画,可以改写他的plainEvent函数如下:

from PySide2.QtWidgets import QFrame
from PySide2.QtGui import QPaintEvent
from PySide2.QtGui import QPainter
from PySide2.QtGui import QBrush
from PySide2.QtGui import QColor
from PySide2.QtCore import QPoint
from PySide2.QtCore import QSize
class DrawFrame(QFrame):def __init__(self, parent=None):QFrame.__init__(self,parent)def paintEvent (self,event):painter = QPainter(self)width = self.width()height = self.height()painter.setBrush(QBrush(QColor(0xFF,0xFF,0xFF))) # 设置图刷的颜色painter.drawRect(0,0,width,height)               # 布满drawframe地画矩形

然后跑到QT creator中添加一个Frame控件,右击->提升为->输入你的类的名称(DrawFrame)和头文件(就是drawFrame不要加py

然后运行puside2-uic…

然后我们就啥都看不到,为啥呢

pyside有些智障,没给我们转好?不仅仅如此。我们还需要改写一个函数sizeHint:

    def sizeHint(self):return QSize(400,300)

这里返回的是你想要具体显示的大小

然后运行puside2-uic…

OK现在能看到东西了,但是大小策略失效,譬如Expanding策略便不能正常运转

为啥呢,pyside没给我们加布局!!他只搞了布局,但是没加进去,woc!

于是我们可以在合适的地方加入以下语句:

self.ui.centralWidget.setLayout(self.ui.verticalLayout)

PySide2从零开始的python界面设计3---插入自定义控件与继承概念相关推荐

  1. PySide2从零开始的python界面设计5---搞定鼠标事件与鼠标样式!

    捕获鼠标事件 所有widget类都含有四个鼠标事件,分别代表着双击,移动,单击,释放: def mouseDoubleClickEvent(self,event): # mouseMoveEvent ...

  2. python界面设计

    第一章 Python项目设计之界面选择 目录 第一章 Python项目设计之界面选择 前言 一.UI是什么? 二.三种主要图形界面的选择 1.Tkinter 2.wxPython 3.PySide2. ...

  3. python界面设计模块_Python+Pycharm+PyQT5可视化程序设计入门

    AD: 购买本站源码请联系QQ677123或右侧QQ在线. 一个优秀的程序必须要有友好的可视化交互界面GUI.Python有很多GUI开发的框架,像我之前常用的是自带的Tkinter,对于一些小功能不 ...

  4. python界面设计实例-Python GUI项目实战(二)主窗体的界面设计与实现

    前言 上一节我们介绍了登录窗体的GUI设计与功能实现,用户的账号和密码校验完成后应当跳转到主窗体内容,这一节我们将具体介绍主窗体界面的设计与功能实现! 一.基础界面设计 我们新建一个900x640的窗 ...

  5. python界面设计-手把手教你用Python设计一个简单的命令行界面

    原标题:手把手教你用Python设计一个简单的命令行界面 对 Python 程序来说,完备的命令行界面可以提升团队的工作效率,减少调用时可能碰到的困扰.今天,我们就来教大家如何设计功能完整的 Pyth ...

  6. python界面设计-python图形化界面设计tkinter

    匿名用户 1级 2017-12-13 回答 python提供了多个图形开发界面的库,几个常用Python GUI库如下: Tkinter: Tkinter模块("Tk 接口")是P ...

  7. python界面设计资源库_python GUI库图形界面开发之PyQt5 Qt Designer工具(Qt设计师)详细使用方法及Designer ui文件转py文件方法...

    PyQt5 Qt Designer (Qt设计师) PyQt5是对Qt所有类进行封装, Qt能开发的东西, PyQt都能开发. Qt是强大的GUI库之一, 用C++开发, 并且跨平台. PyQt双许可 ...

  8. python界面设计实例-【Python】Tkinter图形界面设计(GUI)

    简介 作为 Python 开发者,图形用户界面(GUI)开发是必备技能之一.目前,市面上支持 Python 的"GUI 工具包"很多,各有特点,虽然大多数工具包的基础类似,但要学习 ...

  9. python界面设计实例qt_pyqt的最小示例qtreeview和qt设计

    我试图为qt设计器设计的应用程序获取一个最小的示例,其中pyqt涉及一个QTreeView 1)我可以用这种方式启动应用程序,但是如果我按下按钮,TreeView小部件中没有显示任何条目,我没有收到任 ...

最新文章

  1. HTML5----CSS显示半个字符
  2. Cs Round#56 D Find Path Union
  3. 树状数组之区间修改单点查询
  4. execl用宏查询mysql_关于EXCEL能否用宏直接连到oracle数据库然后取数据
  5. 设计模式大纲整理——编目、分类、选择与使用
  6. 【批处理】通过bat文件执行python程序
  7. 详解java二叉排序树_java实现二叉排序树
  8. TCPip详解学习--广播,多播
  9. PHP(阿里云短信验证码)
  10. U盘被写保护怎么解除?
  11. emmagee邮件设置
  12. layabox 打印_Layabox 集成指南
  13. HZNU 与班尼特·胡迪一起攻破浮空城 【DP】
  14. 04 Convex problem凸优化问题
  15. XTU OJ 1359 字符频度
  16. Linux学习日志-01
  17. mtk配置flash
  18. 为地球减碳1亿吨,阿里云低碳科技加速器发布
  19. cmd输入cl提示不是内部命令
  20. 通过五轮阿里面试,阿里实习生亲述面试经历!

热门文章

  1. 《Web全栈工程师的自我修养》书籍摘抄
  2. 专访光庭:传统测绘与众包模式融合,高精地图呼唤新的算法与平台
  3. 全国地质灾害点shp崩塌滑坡泥石流空间分布地质灾害详查等数据集
  4. 最近在读Metaphors We Live By
  5. 字根科技-政府网站错别字检测的新选择
  6. pycharm使用SSH连接linux服务器
  7. 趁着下班前五分钟书写——Vue3通讯(常规写法、语法糖、v-modle、兄弟通讯)
  8. 夜空中星星闪动html,夜空中的星星为什么会一直闪烁?
  9. 让地球的实时美丽照片显示在你的Mac桌面上-即刻地球 mac中文版
  10. 数说故事连锁医药行业热点快报——资讯篇