PyQt5学习 (3)--QWidget(下)
层级关系、层级控制:
调整Z轴顺序
点击查看代码
label1 = QLabel(window)
label1.setText("标签1")
label1.resize(200, 200)
label1.setStyleSheet("background-color: red;")
label2 = QLabel(window)
label2.setText("标签2")
label2.resize(200, 200)
label2.setStyleSheet("background-color: green;")
label2.move(100, 100)
# 标签2在标签1上方,现在想把标签2移动下去,在标签1的下方
label2.lower() # 使控件在最下方
label1.raise_() # 使控件在最上方
label2.stackUnder(label1) # 使控件在某控件下方
窗口特定操作
1.图标标题和不透明度
点击查看代码
window.setWindowTitle("窗口相关的操作") # 凡是顶层控件,都可以设置标题
icon = QIcon("madeline.jpg") # 可以放入路径或直接放入图像
window.setWindowIcon(icon) # 设置窗口图标
print(window.windowIcon()) # 获取窗口图标
window.setWindowOpacity(0.5) # 设置窗口不透明度(1为不透明,0为透明)
print(window.windowOpacity()) # 获取窗口不透明度
2.窗口状态(最小化,最大化,全屏等等)
点击查看代码
window1 = QWidget()
window2 = QWidget()
print(window1.windowState() == Qt.WindowNoState)
window1.setWindowState(Qt.WindowMinimized) # 设置窗口状态为最小化
window1.setWindowState(Qt.WindowMaximized) # 设置窗口状态为最大化
window1.setWindowState(Qt.WindowFullScreen) # 设置窗口状态为全屏
window1.show()
window2.show()
window1.setWindowState(Qt.WindowActive) # 活动窗口,使w1在w2前
3.最大化最小化
点击查看代码
window1.showMaximized() # 展示并使窗口最大化(带show就可以)
window1.showFullScreen() # 全屏
window1.showMinimized() # 最小化
window1.showNormal()
window1.isMaximized() # 判断是否是最大化
window1.isMinimized() # 判断是否是最大化
window1.isFullScreen() # 判断是否是全屏
4.窗口标志

点击查看代码
window = QWidget(flags=Qt.FramelessWindowHint) # 设置无边框窗口(法1)
window = QWidget()
window.setWindowFlag(Qt.FramelessWindowHint) # 设置无边框窗口(法2)
window.setWindowOpacity(0.5) # 设置窗口不透明度
案例


封装的思想:
【Python Pyqt5最详细教程(一)】 https://www.bilibili.com/video/BV1mg4y1p74P/?p=63&share_source=copy_web&vd_source=15fb681e1f5b7ce6070d9ce0522af1bc
公共数据可以以属性的方式保存
控件交互
1.是否可用
点击查看代码
btn1 = QPushButton(window)
btn1.move(200, 200)
btn1.setEnabled(True) # 设置控件是否可用
print(btn1.isEnabled()) # 获取控件是否可用
2.可见隐藏、获取(在界面切换的时候会用到)
父控件不展示,子控件即使显示也不一定能看到
点击查看代码
btn2 = QPushButton(window)
btn2.setText("按钮2")
btn2.setStyleSheet("background-color: cyan;")
btn2.move(200, 200)
btn2.show() # 显示控件
btn2.hide() # 隐藏控件
btn2.setVisible(True) # 设置控件是否可见
btn2.setHidden(False) # 设置控件是否不可见
print(btn2.isHidden()) # 查看是否隐藏,一般基于父控件可见,如果父控件被隐藏而子控件没有被隐藏,则显示False
print(btn2.isVisible()) # 查看是否可见,如果父控件被隐藏
print(btn2.isVisibleTo(window)) # 如果能随着widget控件的显示和隐藏而同步变化,则返回True/如果父控件显示的时候,子控件是否跟着被显示
3.被编辑状态
点击查看代码
window.setWindowTitle("控件交互[*]") # 凡是顶层控件,都可以设置标题
window.resize(500, 500)
window.move(400, 200)
window.setWindowModified(True) # 设置控件是否被编辑(区别在标题中的*会不会显示,中括号不会被显示)
print(window.isWindowModified()) # 获取控件是否被编辑
4.活跃窗口

上图左为活跃状态,右为非活跃状态
点击查看代码
print(w2.isActiveWindow()) # 判断窗口是否活跃
print(window.isActiveWindow())
5.关闭控件
点击查看代码
btn2.setAttribute(Qt.WA_DeleteOnClose, True) # 设置控件被关闭后立即被释放
btn2.close() # 关闭按钮,与show相对
btn2.destroyed.connect(lambda: print("按钮被释放了"))
6.案例:简单登陆界面
点击查看代码
from PyQt5.Qt import * # 包含了一些常用的类
# 类的应用
class Window(QWidget):
def __init__(self):
super().__init__()
self.setWindowTitle("交互状态案例")
self.resize(500, 500)
self.move(400, 200)
self.setup_ui()
def setup_ui(self):
label = QLabel(self)
label.setText("登陆")
label.move(100, 50)
# label.hide() # 隐藏标签
le = QLineEdit(self)
le.setText("文本框")
le.move(100, 100)
btn = QPushButton(self)
btn.setText("登录")
btn.move(100, 150)
btn.setEnabled(False) # 设置按钮为不可用
def text_cao(text):
# print("文本内容发生了改变", text)
# if len(text) > 0:
# btn.setEnabled(True)
# else:
# btn.setEnabled(False)
btn.setEnabled(len(text) > 0)
le.textChanged.connect(text_cao)
def check():
print("按钮被点击了")
context = le.text()
if context == "Sz":
label.setText("登陆成功")
else:
label.setText("登陆失败")
label.show()
label.adjustSize()
btn.pressed.connect(check)
if __name__ == '__main__': # 测试代码
import sys
app = QApplication(sys.argv)
window = Window()
window.show()
sys.exit(app.exec_())
案例实现了对文本框内容的读取,以及按钮的隐藏显示状态,全部复制即可使用
7.信息提示
点击查看代码
app = QApplication(sys.argv) # 1.创建一个应用程序
# window:窗口
# window = QWidget()
window = QMainWindow() # 组合控件
# 懒加载:用到的时候才会创建
window.statusBar() # 加载状态栏
window.setWindowTitle("信息提示案例") # 凡是顶层控件,都可以设置标题
window.resize(500, 500)
window.move(400, 200)
window.setStatusTip("芝士窗口") # 当鼠标停留在窗口控件身上后,在状态栏提示的一段文本
print(window.statusTip()) # 获取该文本
window.setWindowFlag(Qt.WindowContextHelpButtonHint)
label = QLabel(window)
label.setText("这是标签")
label.setStatusTip("芝士标签") # 设置状态栏显示文本
label.setToolTip("真是一个标签") # 设置悬停标签
print(label.toolTip())
label.setToolTipDuration(1000) # 设置悬停标签显示时间(单位:ms)
label.setWhatsThis("这真的是一个标签") # 切换到“查看这是啥”模式,点击该控件时显示
window.show()
sys.exit(app.exec_()) # 3.开始执行应用程序,并进入消息循环(无限循环)
8.焦点控制

用处不大
下面将学习QAbstractButton
PyQt5学习 (3)--QWidget(下)的更多相关文章
- PyQt5学习笔记-从主窗体打开一个子窗体
PyQt5学习笔记-从主窗体打开一个子窗体 软件环境: Eric6+Python3.5+PyQt5 试验目标: 1.点击菜单项Open,打开一个子窗体 2.点击按钮Open,打开一个子窗体 主窗体设计 ...
- Python pyQt4/PyQt5 学习笔记4(事件和信号)
信号 & 槽 import sys from PyQt5.QtCore import Qt from PyQt5.QtWidgets import (QWidget,QLCDNumber,QS ...
- Python pyQt4/PyQt5 学习笔记3(绝对对位,盒布局,网格布局)
本节研究布局管理的内容. (一)绝对对位 import sys from PyQt4 import QtGui class Example(QtGui.QWidget): def __init__( ...
- Pyqt5学习笔记(一)
Python已有的GUI框架: Tkinter(python内嵌的GUI环境,使用TCL实现,易学易用,方便简单创GUI自带无需安装,适用于Unix.Windows和Mac系统组,在Tk8.0的后续版 ...
- 学习和研究下unity3d的四元数 Quaternion
学习和研究下unity3d的四元数 Quaternion 今天准备学习和研究下unity3d的四元数 Quaternion 四元数在电脑图形学中用于表示物体的旋转,在unity中由x,y,z,w 表示 ...
- OpenGL学习之windows下安装opengl的glut库
OpenGL学习之windows下安装opengl的glut库 GLUT不是OpenGL所必须的,但它会给我们的学习带来一定的方便,推荐安装. Windows环境下的GLUT下载地址:(大小约为15 ...
- PHP学习笔记----IIS7下安装配置php环境
原文:PHP学习笔记----IIS7下安装配置php环境 Php如何安装 Php版本的选择 Php在windows下的(php5.4.7)有两种版本: VC9 x86 Non Thread Safe ...
- ios学习--iphone 实现下拉菜单
原文地址:ios学习--iphone 实现下拉菜单作者:sdglyuan00 #import @interface DropDown1 : UIView <</span>UITabl ...
- 2017-2018-1 20155228 《信息安全系统设计基础》第六周学习总结&课下作业
20155228 2017-2018-1 <信息安全系统设计基础>第六周学习总结&课下作业 教材学习内容总结 异常及其种类 异常可以分为四类:中断(interrupt) ,陷阱(t ...
- Docker学习之Centos7下安装
Docker学习之Centos7下安装 centos7 64下直接使用yum安装docker环境,步骤如下: 卸载旧版本docker sudo yum remove docker docker-com ...
随机推荐
- Pytest+allure+requests接口自动化
实现功能 测试数据隔离: 测试前后进行数据库备份/还原 接口直接的数据依赖: 需要B接口使用A接口响应中的某个字段作为参数 对接数据库: 讲数据库的查询结果可直接用于断言操作 动态多断言: 可(多个) ...
- 创建一个HashMap实例,该实例具有足够高的“初始容量”
创建一个HashMap实例,该实例具有足够高的"初始容量" /** * 创建一个{@link HashMap}实例,该实例具有足够高的"初始容量" * * @p ...
- JS笔记(四):面向对象、异常处理
镇楼图 Pixiv:torino 六.JS中的面向对象 类(class) 博主视为你已拥有相关基础,这里不再赘述相关概念 类的语法如下,class在本质上是function,可以说class只是针对构 ...
- shell typeset 命令使用修改大小写
typeset的-u选项可以将一个变量的字符变成大写 1 /home/lee#typeset -u var=abc 2 /home/lee#echo $var 3 ABC -l选项将一个变量的字符变成 ...
- RKO组——冲刺随笔(2)
这个作业属于哪个课程 至诚软工实践F班 这个作业要求在哪里 第五次团队作业:项目冲刺 这个作业的目标 记录冲刺计划.要求包括当天会议照片.会议内容以及项目燃尽图(项目进度) 1.昨日进展 已开始着手模 ...
- 第一课 Hello World程序
接触一门编程语言都是从HelloWorld开始的.我们以Idea为开发工具,写一个JAVA版的HelloWorld. 1,启动idea,点击菜单 File->New->Project 新建 ...
- webpack逆向之报错Cannot read properties of undefined (reading 'call')
经典报错 记录一下: 1: 缺少模块 补上 2.主模块无法调用子模块 有可能网站用的数组形式的模块包,你用的是对象,调用方法就要改变. 改写过程中 用的是对象方式: 那么3号包调用的4号包 ...
- Leecode 141.环形链表(Java 快慢指针)
想法: 1:遍历链表,每次判断节点是否被访问过.(哈希表) 2:快慢指针(看题解之后) 两个指针pq都在head头指针开始(初始化): 快指针每次走两步,慢指针每次走一步,如果 ...
- js对象深拷贝方法
JSON.stringify()是目前前端开发过程中最常用的深拷贝方式, 原理是把有个对象序列化成为一个 JSON 字符串,将对象的内容转换成字符串的形式再保存到磁盘上, 再用 JSON.parse( ...
- 记录小程序字符串模板渲染WxParse
1.先去https://github.com/icindy/wxParse上downLoad代码,然后直接复制到项目里,跟pages目录同级 2.在要用的js页面声明 var WxParse = re ...