学习PyQt5是个机缘,那是因为我的linux16.04+python3.6使了浑身解数也装不上PyQt4!

PyQt5的官方文档貌似是要钱的!又想快速了解这个东东,我还是借鉴了万能的博客园大佬博主:https://home.cnblogs.com/u/archisama/

看样子是翻译的文档,很清晰。不过至今仍然很晕乎,这个东东对我写接口到底有多大用处

我是直接用pycharm写PyQt5 代码的,不过网上很多人说要配置一下环境https://www.cnblogs.com/dalanjing/p/6978373.html

不过很尴尬的是按照步骤,我又装不上pyqt5-tools!感叹天要亡我啊!看来机缘不够。

我这个小白,在没有配置环境的情况下,开始敲代码了,目前感觉还是有问题的,按照例子说窗口的默认图标-- 删除,隐藏,放大 这些图标都应该在右上角的,为毛我的都在左上角,导致我的自定义图标不显示,很是折腾了一番,感叹自我解决能力太低了,上述几个问题都没解决,希望有大佬看到,给小弟解答一下!

下面我就厚脸皮的放代码了

1.我的第一个栗子,一句一解释,符合我的风范

if __name__ == '__main__':
# 所有的PyQt5应用必须创建一个应用(Application)对象,sys.argv参数是一个来自命令行的参数列表。
# Python脚本可以在shell中运行。这是我们用来控制我们应用启动的一种方法。
app = QApplication(sys.argv)
# Qwidget组件是PyQt5中所有用户界面类的基础类
w = QWidget()
# resize方法调整了wiget的发小,意思是宽250,高150
w.resize(250, 150)
# move()方法移动widget组件到一个位置,这个位置是屏幕上x=300,y=300的坐标。
w.move(300, 300)
# 窗口的标题
w.setWindowTitle('my first gui')
# show()方法在屏幕上显示出widget。一个widget对象在这里第一次被在内存中创建,并且之后在屏幕上显示。
w.show()
# 应用进入主循环,事件处理开始执行。主循环用于接收来自窗口触发的事件,并且转发他们到widget应用上处理
# sys.exit()方法确保一个不留垃圾的退出,主循环退出
# exec_()方法有一个下划线。因为exec是Python保留关键字。因此,用exec_()来代替
sys.exit(app.exec_())

2.自定义图标

import sys
from PyQt5.QtWidgets import QApplication, QWidget
from PyQt5.QtGui import QIcon class Example(QWidget): def __init__(self):
# 调用父类的__init__构造方法
super().__init__()
# 调用initUI方法
self.initUI() def initUI(self):
# 将窗口在屏幕上显示,并设置了它的尺寸(x轴,y轴,宽,高) (Geometry:几何形状 音标:[dʒiˈɑ:mətri])
self.setGeometry(300, 300, 300, 250)
# 设置窗口标题
self.setWindowTitle('Icon')
#设置图标,QIcon对象接收一个我们要显示的图片路径作为参数。
self.setWindowIcon(QIcon('web3.png')) self.show() if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())

本来它应该是这样的

然而我的确是这样的,所以抱歉,下面的所有涉及窗口图标的都是不显示的,难道这个跟我的linux系统有关?反正图片路径绝对没有问题,我都是同级目录下

3.显示了提示框

class Example(QWidget):

    def __init__(self):
super().__init__() self.initUI() def initUI(self):
# 设置了用于提示框的字体。我们使用10px大小的SansSerif字体。
QToolTip.setFont(QFont('SansSerif', 10))
# 鼠标放到敞口提示语
self.setToolTip('This is a <b>QWidget</b> widget')
# 设置button 按钮
btn = QPushButton('Button', self)
# 鼠标已到button按钮框里面,不用点击展示提示语
btn.setToolTip('This is a <b>QPushButton</b> widget')
# 改变了按钮的大小,并移动了在窗口上的位置。setHint()方法给了按钮一个推荐的大小。
btn.resize(btn.sizeHint())
btn.move(50, 50) self.setGeometry(300, 300, 300, 200)
self.setWindowTitle('Tooltips')
self.show() if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())

结果

我的图截不到效果,我就借了原图

4.关闭窗口

import sys
from PyQt5.QtWidgets import QWidget, QPushButton, QApplication
from PyQt5.QtCore import QCoreApplication # 关闭窗口
# 事件处理系统由信号&槽机制建立。如果我们点击了按钮,信号clicked被发送。槽可以是Qt内置的槽或Python 的一个方法调用。
class Example(QWidget): def __init__(self):
super().__init__() self.initUI() def initUI(self):
qbtn = QPushButton('Quit', self)
# QCoreApplication类包含了主事件循环;它处理和转发所有事件。instance()方法给我们返回一个实例化对象
# 点击信号连接到quit()方法,将结束应用。事件通信在两个对象之间进行:发送者和接受者。发送者是按钮,接受者是应用对象。
qbtn.clicked.connect(QCoreApplication.instance().quit)
qbtn.resize(qbtn.sizeHint())
qbtn.move(50, 50) self.setGeometry(300, 300, 250, 150)
self.setWindowTitle('Quit button')
self.show() if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())

结果:

5.消息盒子

# 如果我们关闭一个QWidget,QCloseEvent类事件将被生成。要修改组件动作我们需要重新实现closeEvent()事件处理方法
import sys
from PyQt5.QtWidgets import QWidget, QMessageBox, QApplication class Example(QWidget): def __init__(self):
super().__init__() self.initUI() def initUI(self): self.setGeometry(300, 300, 250, 150)
self.setWindowTitle('Message box')
self.show() def closeEvent(self, event):
# 我们现实一个带两个按钮的message box:YES和No按钮。
# 第一个字符串的内容被显示在标题栏上。
# 第二个字符串是对话框上显示的文本。
# 第三个参数指定了显示在对话框上的按钮集合。最后一个参数是默认选中的按钮。这个按钮一开始就获得焦点。返回值被储存在reply变量中。
reply = QMessageBox.question(self, 'Message',
"Are you sure to quit?", QMessageBox.Yes |
QMessageBox.No, QMessageBox.No) if reply == QMessageBox.Yes:
event.accept()
else:
event.ignore() if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())

结果

6.屏幕上的居中窗口

import sys
# QtGui.QDesktopWidget类提供了我们桌面窗口的信息,包含了屏幕尺寸
from PyQt5.QtWidgets import QWidget, QDesktopWidget, QApplication class Example(QWidget): def __init__(self):
super().__init__() self.initUI() def initUI(self):
self.resize(250, 150)
# 调用窗口居中center函数
self.center()
self.setWindowTitle('Center')
self.show() def center(self):
# 获得主窗口的一个矩形特定几何图形->qr。这包含了窗口的框架。frame:框架
qr = self.frameGeometry()
# 算出相对于显示器的绝对值。并且从这个绝对值中,我们获得了屏幕中心点->cp
cp = QDesktopWidget().availableGeometry().center()
# 矩形已经设置好了它的宽和高。现在我们把矩形的中心设置到屏幕的中间去。矩形的大小并不会改变。
qr.moveCenter(cp)
# 移动了应用窗口的左上方的点到qr矩形的左上方的点,因此居中显示在我们的屏幕上
self.move(qr.topLeft()) if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())

结果

over......

最新文章

  1. cookie操作简单实现
  2. Win7下搭建VPN服务器教程
  3. SDL教程第一和第二个视频的笔记
  4. poj2486Apple Tree[树形背包!!!]
  5. 【MySQL】MySQL压缩包安装遇到问题
  6. vitruviano
  7. HDU5534--Partial Tree (完全背包)
  8. 17、SQL基础整理(事务)
  9. 最简单的Linux-ACL操作
  10. ASP.NET中的注释 .
  11. 通过expdp/impdp进行oracle数据库的备份恢复详细指导
  12. NGUI具有流光效果的UISprite
  13. Python入门教程(1)
  14. webpack中dev-server不写contentBase时如何设置可以显示页面并且加载js
  15. 基于Struts2的SpringMVC入门
  16. 第201621123043 《Java程序设计》第14周学习总结
  17. 【Java】 剑指offer(46) 把数字翻译成字符串
  18. [No0000E4]C# 常量
  19. 数据包注入重放工具aireplay-ng
  20. Java中的常见异常

热门文章

  1. leetcode.矩阵.240搜索二维矩阵II-Java
  2. CF1228F
  3. Spring学习笔记(8)——依赖注入
  4. OpenGL学习——绘制矩形
  5. Linux下如何查看系统是多少位的
  6. InnoDB global status
  7. Codeforces 319C DP 斜率优化
  8. printf sscanf进阶
  9. 【sql】leetcode习题 (共 42 题)
  10. Fatal error compiling: invalid target release: 11 -&gt; [Help 1]