PyQt5初级——2
QLineEdit.selectAll()QLineEdit.setFocus()QLineEdit.text()QLineEdit.clear()self.text = QLineEdit('在这里输入数字', self)self.text.selectAll()self.text.setFocus()self.text.setGeometry(80, 50, 150 ,30)
QMessageBox.about
QMessageBox.critical
QMessageBox.information
QMessageBox.warningQMessageBox.question(self, '确认', '确认退出吗', QMessageBox.Yes | QMessageBox.No, QMessageBox.No)critical = information = warning = questionQMessageBox.about(self, '看结果','猜小了!')
事件:
点击关闭按钮会触发closeEvent事件。
可以重写该事件来达到相应的目的。
def closeEvent(self, event):reply = QMessageBox.question(self, '确认', '确认退出吗', QMessageBox.Yes | QMessageBox.No, QMessageBox.No)if reply == QMessageBox.Yes:event.accept() else:event.ignore()
键盘触发事件
def keyPressEvent(self, e):if e.key() == Qt.Key_Up:self.lab.setText('↑')elif e.key() == Qt.Key_Down:self.lab.setText('↓')elif e.key() == Qt.Key_Left:self.lab.setText('←')else:self.lab.setText('→')
绘画事件
def paintEvent(self, event):if self.pos:q = QPainter(self)q.drawLine(0, 0, self.pos.x(), self.pos.y())
鼠标移动事件
def mouseMoveEvent(self, event):distance_from_center = round(((event.y() - 250)**2 + (event.x() - 500)**2)**0.5)self.label.setText('坐标: ( x: %d ,y: %d )' % (event.x(), event.y()) + " 离中心点距离: " + str(distance_from_center)) self.pos = event.pos()self.update()
self.setMouseTracking(True) #开启鼠标跟踪
有时,知道哪个窗口小部件是信号的发送者非常有用。 为此,PyQt5具有sender()方法。
import sys
from PyQt5.QtWidgets import (QApplication, QMessageBox, QWidget, QPushButton)
from random import randintclass Example(QWidget):def __init__(self):super().__init__()self.initUI()def initUI(self):self.setGeometry(200, 200, 300, 300)self.setWindowTitle('学点编程吧')bt1 = QPushButton('剪刀',self)bt1.setGeometry(30,180,50,50)bt2 = QPushButton('石头',self)bt2.setGeometry(100,180,50,50)bt3 = QPushButton('布',self)bt3.setGeometry(170,180,50,50)bt1.clicked.connect(self.buttonclicked)bt2.clicked.connect(self.buttonclicked)bt3.clicked.connect(self.buttonclicked)self.show()def buttonclicked(self):computer = randint(1,3)player = 0sender = self.sender()if sender.text() == '剪刀':player = 1elif sender.text() == '石头':player = 2else:player = 3if player == computer:QMessageBox.about(self, '结果', '平手')elif player == 1 and computer == 2:QMessageBox.about(self, '结果', '电脑:石头,电脑赢了!')elif player == 2 and computer == 3:QMessageBox.about(self, '结果', '电脑:布,电脑赢了!')elif player == 3 and computer == 1:QMessageBox.about(self,'结果','电脑:剪刀,电脑赢了!')elif computer == 1 and player == 2:QMessageBox.about(self,'结果','电脑:剪刀,玩家赢了!')elif computer == 2 and player == 3:QMessageBox.about(self,'结果','电脑:石头,玩家赢了!')elif computer == 3 and player == 1:QMessageBox.about(self,'结果','电脑:布,玩家赢了!')if __name__ == '__main__':app = QApplication(sys.argv)ex = Example()sys.exit(app.exec_())
信号
发出自定义信号
import sys
from PyQt5.QtWidgets import (QApplication, QWidget, QMessageBox)
from PyQt5.QtCore import (pyqtSignal, QObject)class Signal(QObject):showmouse = pyqtSignal()class Example(QWidget):def __init__(self):super().__init__()self.initUI()def initUI(self):self.setGeometry(200, 200, 300, 300)self.setWindowTitle('学点编程吧')self.s = Signal()self.s.showmouse.connect(self.about)self.show()def about(self):QMessageBox.about(self,'鼠标','你点鼠标了吧!')def mousePressEvent(self, e):self.s.showmouse.emit()if __name__ == '__main__':app = QApplication(sys.argv)ex = Example()sys.exit(app.exec_())
布局
QHBoxLayout:水平方向布局管理器
QVBoxLayout:垂直方向布局管理器
QGridLayout:网格布局管理器
bt1 = QPushButton('剪刀', self)bt2 = QPushButton('石头', self)bt3 = QPushButton('布', self)hbox = QHBoxLayout()hbox.addStretch(1) #增加伸缩量hbox.addWidget(bt1)hbox.addStretch(1)#增加伸缩量hbox.addWidget(bt2)hbox.addStretch(1)#增加伸缩量hbox.addWidget(bt3)hbox.addStretch(6)#增加伸缩量self.setLayout(hbox)
或者也可以直接
hbox = QHBoxLayout(self);这样就不需要self.setLayout(hbox)了。
其中四个addStretch()函数用于在button按钮间增加伸缩量,伸缩量的比例为1:1:1:6,意思就是将button以外的空白地方按设定的比例等分为9份并按照设定的顺序放入布局器中。
PyQt5初级——2相关推荐
- python PyQt5初级教程hello world
PyQt5初级教程hello world 本文主要介绍环境的安装和用QT拖控件实现一个简单的hello程序 PyQt5安装 经过我的多次尝试,发现python3.5才能顺利装上PyQt5.安装方法很简 ...
- PyQt5初级教程--PyQt5中的部件II[9/13]
原文:https://blog.csdn.net/neverstop_2009/article/details/47378779 PyQt5的部件.我们会介绍QPixmap.QLineEdit.QSp ...
- PyQt5之实现网易云播放唱片的动作(图片的旋转)
最近在做项目的播放器部分,在实现播放器像网易云那样点击播放唱片就会自动转动时遇到了问题,经过一套搜索引擎组合拳,终于是实现了该功能,成品如下 闲话少说,上代码(代码部分做了大量的注释和个人理解,就不额 ...
- 【博客8】缤果PyQt5串口调试助手V1.1(初级篇)
超级好用的Python QT GUI串口调试助手 目录 前言 一.软件概要: 二.软件界面: 1.App动态演示 2.其他扩展展示 三.main.py源码: 1.PyQt5_Serial_Debug_ ...
- python PyQt5中文教程☞【第十节】PyQt5绘图(绘制文本drawText()、画点drawPoints()、设置颜色、QPen(画笔)绘制线条、QBrush(笔刷)绘制纹理
引用文章:http://code.py40.com/pyqt5/32.html 文章目录 绘制文本 画点 PyQt5颜色 QPen(画笔) QBrush(笔刷) 总结:一发现有事件触发就会更新QWid ...
- python + pyqt5 UI和信号槽分离方法
初级菜鸟,知识点记录. 每次重新生成UI.py文件的时候,里面的按钮方法都会被清除,想一个方法可以把按钮响应方法放到外面,利于维护. 新建一个按钮文件并继承UI代码,把信号槽及按钮响应方法写在按钮文件 ...
- 用PYQT5实现非常基本sqlite的编辑器
用PYQT5实现非常sqlite简单数据显示编辑 目录 复制 目录 主要思路 链接数据库 cachedTable treeview 代码实现 界面实现 功能介绍 截图 主要思路 链接数据库 self. ...
- 在PyQT5上可视化车道线检测
环境配置:python=3.8,opencv-python=4.5.1,pyqt5=5.15,numpy=1.19.5 功能:实现选择视频文件(没有设置图片选择),播放,中止,暂停,继续播放 代码文件 ...
- Python + Go-cqhttp + Pyqt5 —— 搭建QQ机器人
搭建QQ机器人 Go-cqhttp 简介 兼容性 拓展支持 性能 下载安装 跳过启动的五秒延时 使用代码接收消息 测试[API文档](https://docs.go-cqhttp.org/api/) ...
最新文章
- 1112: 零起点学算法19——输出特殊值
- 利用Wireshark和OSS的API文档简单实现上传和下载
- mysql-master/slave同步问题:Slave_IO_Running: No
- 结合项目实例 回顾传统设计模式(二)观察者模式
- python在线编辑器编译excel_python在线编译器的简单原理及简单实现代码
- 一个在分割、检测与定位、高分辨率通用的网络
- Java单向链表操作详解
- CountDownLatch(线程计数器)
- 【Linux】一步一步学Linux——init命令(138)
- CSS3与页面布局学习笔记(六)——CSS3新特性(阴影、动画、渐变、变形( transform)、透明、伪元素等)...
- Screen Painter 程序设计
- java类怎么删除对象_java中对象的生成使用和删除
- python怎么用input输入列表_Python - 根据列表内容验证用户输入的最佳方法是什么?...
- python群发邮件 不进垃圾箱_邮件群发不进垃圾箱
- 16秋南开计算机应用答案,南开16秋学期《计算机应用基础》在线作业.doc
- 接缝雕刻算法:一种看似不可能的图像大小调整方法
- Vmware WorkStation(中文名“威睿工作站”) 网卡图解
- English--基础知识点--2--独立主格
- 大家信夫:社会信用体系高质量发展的根本特征
- STM32速成笔记—按键检测