PySide2从零开始的python界面设计3---插入自定义控件与继承概念
插入自定义控件
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---插入自定义控件与继承概念相关推荐
- PySide2从零开始的python界面设计5---搞定鼠标事件与鼠标样式!
捕获鼠标事件 所有widget类都含有四个鼠标事件,分别代表着双击,移动,单击,释放: def mouseDoubleClickEvent(self,event): # mouseMoveEvent ...
- python界面设计
第一章 Python项目设计之界面选择 目录 第一章 Python项目设计之界面选择 前言 一.UI是什么? 二.三种主要图形界面的选择 1.Tkinter 2.wxPython 3.PySide2. ...
- python界面设计模块_Python+Pycharm+PyQT5可视化程序设计入门
AD: 购买本站源码请联系QQ677123或右侧QQ在线. 一个优秀的程序必须要有友好的可视化交互界面GUI.Python有很多GUI开发的框架,像我之前常用的是自带的Tkinter,对于一些小功能不 ...
- python界面设计实例-Python GUI项目实战(二)主窗体的界面设计与实现
前言 上一节我们介绍了登录窗体的GUI设计与功能实现,用户的账号和密码校验完成后应当跳转到主窗体内容,这一节我们将具体介绍主窗体界面的设计与功能实现! 一.基础界面设计 我们新建一个900x640的窗 ...
- python界面设计-手把手教你用Python设计一个简单的命令行界面
原标题:手把手教你用Python设计一个简单的命令行界面 对 Python 程序来说,完备的命令行界面可以提升团队的工作效率,减少调用时可能碰到的困扰.今天,我们就来教大家如何设计功能完整的 Pyth ...
- python界面设计-python图形化界面设计tkinter
匿名用户 1级 2017-12-13 回答 python提供了多个图形开发界面的库,几个常用Python GUI库如下: Tkinter: Tkinter模块("Tk 接口")是P ...
- python界面设计资源库_python GUI库图形界面开发之PyQt5 Qt Designer工具(Qt设计师)详细使用方法及Designer ui文件转py文件方法...
PyQt5 Qt Designer (Qt设计师) PyQt5是对Qt所有类进行封装, Qt能开发的东西, PyQt都能开发. Qt是强大的GUI库之一, 用C++开发, 并且跨平台. PyQt双许可 ...
- python界面设计实例-【Python】Tkinter图形界面设计(GUI)
简介 作为 Python 开发者,图形用户界面(GUI)开发是必备技能之一.目前,市面上支持 Python 的"GUI 工具包"很多,各有特点,虽然大多数工具包的基础类似,但要学习 ...
- python界面设计实例qt_pyqt的最小示例qtreeview和qt设计
我试图为qt设计器设计的应用程序获取一个最小的示例,其中pyqt涉及一个QTreeView 1)我可以用这种方式启动应用程序,但是如果我按下按钮,TreeView小部件中没有显示任何条目,我没有收到任 ...
最新文章
- HTML5----CSS显示半个字符
- Cs Round#56 D Find Path Union
- 树状数组之区间修改单点查询
- execl用宏查询mysql_关于EXCEL能否用宏直接连到oracle数据库然后取数据
- 设计模式大纲整理——编目、分类、选择与使用
- 【批处理】通过bat文件执行python程序
- 详解java二叉排序树_java实现二叉排序树
- TCPip详解学习--广播,多播
- PHP(阿里云短信验证码)
- U盘被写保护怎么解除?
- emmagee邮件设置
- layabox 打印_Layabox 集成指南
- HZNU 与班尼特·胡迪一起攻破浮空城 【DP】
- 04 Convex problem凸优化问题
- XTU OJ 1359 字符频度
- Linux学习日志-01
- mtk配置flash
- 为地球减碳1亿吨,阿里云低碳科技加速器发布
- cmd输入cl提示不是内部命令
- 通过五轮阿里面试,阿里实习生亲述面试经历!