链接附上,不再更新:PyQt5图形界面编程

第一部分

第一个程序

 # -*- coding: utf-8 -*-

 import sys
from PyQt5.QtWidgets import QApplication, QWidget, QToolTip, QPushButton
from PyQt5.QtGui import QIcon, QFont class Example(QWidget): def __init__(self):
super(Example, self).__init__()
self.initUI() def initUI(self):
'''
在这里我们有两个部件可以显示提示
一个是窗口本身,另一个是按钮
''' #设置提示字体和字号
QToolTip.setFont(QFont('微软雅黑', 10)) #给组件本身设置一个提示
self.setToolTip('this is a widget') #添加一个按钮
btn = QPushButton('Button', self)
#并添加提示
btn.setToolTip('this is a pushbtn')
#设定按钮大小和位置,使用推荐大小
btn.resize(btn.sizeHint())
btn.move(50, 50) #设置窗口的位置和宽高
self.setGeometry(300, 300, 300, 300)
#设置窗口标题
self.setWindowTitle('icon')
#设置窗口图标
self.setWindowIcon(QIcon('dog.jpg')) self.show() if __name__ == '__main__': app = QApplication(sys.argv)
example = Example()
sys.exit(app.exec_())

如何优雅地退出窗口

 # -*- coding: utf-8 -*-

 import sys
from PyQt5.QtWidgets import QApplication, QWidget,QPushButton
from PyQt5.QtCore import QCoreApplication class Example(QWidget): def __init__(self):
super(Example, self).__init__()
self.initUI() def initUI(self): #添加一个按钮
btn = QPushButton('Quit', self)
btn.clicked.connect(QCoreApplication.instance().quit)
#设定按钮大小和位置,使用推荐大小
btn.resize(btn.sizeHint())
btn.move(50, 50) #设置窗口的位置和宽高
self.setGeometry(300, 300, 300, 300)
#设置窗口标题
self.setWindowTitle('quit') self.show() if __name__ == '__main__': app = QApplication(sys.argv)
example = Example()
sys.exit(app.exec_())

PyQt5中的事件处理系统是由信号槽机制(signals and slots)实现的。如果我们点击了这个按钮,就会发出“clicked”这个信号。QtCore.QCoreApplication这个东西包含了程序的主循环,它处理和分派所有的事件,而instance()方法返回的是目前的实例(insatnce)。注意到QtCore.QCoreApplication随着QtGui.QApplication的创建而创建,而由于我们这里用connect()函数将“clicked”事件和可以终止应用的quit()函数联系(connect)在了一起,所以点击按钮,应用终止。这种交流在两个对象之间完成:发送者和接受者,其中发送者是按钮,接受者是应用本身。【这里只要大家对connect方法有个感性的认识就可以了】

消息框

 # -*- coding: utf-8 -*-

 import sys
from PyQt5.QtWidgets import QApplication, QWidget, QMessageBox class Example(QWidget): def __init__(self):
super(Example, self).__init__()
self.initUI() def initUI(self): #设置窗口的位置和宽高
self.setGeometry(300, 300, 300, 300)
#设置窗口标题
self.setWindowTitle('Message Box')
self.show() def closeEvent(self, event):
'''
这里我们设定显示一个有两个选项(yes & no)的消息框(message box)
QtGui.QMessageBox.question()方法的第二个参数是出现在标题栏的标题
第三个参数是消息框显示的对话内容,第四个参数是出现在消息框的按钮的组合【用或( | )连接】
最后一个参数是默认按钮,即消息框刚跳出来的时候按enter键就可以执行的按钮
这里我们将函数的返回值存储在了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)
example = Example()
sys.exit(app.exec_())

居中显示

 # -*- coding: utf-8 -*-

 import sys
from PyQt5.QtWidgets import QApplication, QWidget, QDesktopWidget class Example(QWidget): def __init__(self):
super(Example, self).__init__()
self.initUI() def initUI(self): #设置窗口的位置和宽高
self.resize(500, 500)
#设置窗口标题
self.setWindowTitle('center widget')
self.center()
self.show() def center(self):
# 得到主窗口的矩形框架qr
qr = self.frameGeometry()
# 我们调用这些方法来得到屏幕分辨率,并最终得到屏幕中间点的坐标cp
cp = QDesktopWidget().availableGeometry().center()
# 这里我们将矩形框架移至屏幕正中央,大小不变
qr.moveCenter(cp)
# 最后我们将应用窗口移至矩形框架的左上角点,这样应用窗口就位于屏幕的中央了【注意部件的move都是左上角移动到某点】
self.move(qr.topLeft()) if __name__ == '__main__': app = QApplication(sys.argv)
example = Example()
sys.exit(app.exec_())

第二部分

状态栏(statusbar)

 # -*- coding: utf-8 -*-

 import sys
from PyQt5.QtWidgets import QApplication, QWidget, QMainWindow class Example(QMainWindow): def __init__(self):
super(Example, self).__init__()
self.initUI() def initUI(self):
self.statusBar().showMessage('Ready')
#设置窗口的位置和宽高
self.setGeometry(300, 300, 250, 150)
#设置窗口标题
self.setWindowTitle('statusbar')
self.show() if __name__ == '__main__': app = QApplication(sys.argv)
example = Example()
sys.exit(app.exec_())

菜单栏(menubar)

 # -*- coding: utf-8 -*-

 import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QAction, qApp
from PyQt5.QtGui import QIcon class Example(QMainWindow): def __init__(self):
super(Example, self).__init__()
self.initUI() def initUI(self):
# 创建一个选项有自己的图标和名字
exitAct = QAction(QIcon('dog.jpg'), '&Exit', self)
# 设置对应的一个快捷键
exitAct.setShortcut('CTRL+Q')
# 当鼠标悬停在状态栏的提示信息
exitAct.setStatusTip('Exit Application')
# 当我们选择了这个选项时,一个触发信号(triggered signal)被发出了
# 这个信号和qApp部件的quit()方法相联系(connect),所以信号发出后,程序终止
exitAct.triggered.connect(qApp.quit) statusbar = self.statusBar() menubar = self.menuBar()
fileMenu = menubar.addMenu('&File')
fileMenu.addAction(exitAct) self.setGeometry(300,300,300,300)
self.setWindowTitle('simple menu')
self.show() if __name__ == '__main__': app = QApplication(sys.argv)
example = Example()
sys.exit(app.exec_())

工具栏

# -*- coding: utf-8 -*-

import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QAction, qApp
from PyQt5.QtGui import QIcon class Example(QMainWindow): def __init__(self):
super(Example, self).__init__()
self.initUI() def initUI(self):
# 创建一个选项有自己的图标和名字
exitAct = QAction(QIcon('dog.jpg'), '&Exit', self)
# 设置对应的一个快捷键
exitAct.setShortcut('CTRL+Q')
# 当我们选择了这个选项时,一个触发信号(triggered signal)被发出了
# 这个信号和qApp部件的quit()方法相联系(connect),所以信号发出后,程序终止
exitAct.triggered.connect(qApp.quit) self.toolbar = self.addToolBar('Exit')
self.toolbar.addAction(exitAct) self.setGeometry(300,300,300,300)
self.setWindowTitle('simple menu')
self.show() if __name__ == '__main__': app = QApplication(sys.argv)
example = Example()
sys.exit(app.exec_())

做事从来不坚持的我又开始学习PyQt了。。。。。。的更多相关文章

  1. Python学习笔记之--我又开始学习Python了(随时更新)

    2019.02.09 更新 Python 学习计划已经开始几天了,跟着一本叫<Django for beginner>的书籍在学习用Django搭建自己的第一个网站,目前已经进行到第三章, ...

  2. PyQt 5 的学习引言

    Python 是我学习的第二门编程语言,第一门编程语言是C. 曾经用C和C++的一个库(easyx库)写过图形界面应用, 感受就是难受又难看, 现在想学一下 PyQt 5 这个python的库, 用博 ...

  3. 第15.37节 PyQt(Python+Qt)入门学习:containers容器类部件QMdiArea多文档界面部件详解及编程开发案例

    专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt入门学习 老猿Python博文目录 一.引言 老猿在前期学习PyQt相关知识时,对每个组件的属性及方法都研 ...

  4. PyQt学习问题:Model/View中中EditKeyPressed常量平台编辑键(the platform edit key )是什么?

    老猿在学习PyQt的Model/View设计时,发现是否允许对视图中的数据项进行编辑的函数setEditTriggers的参数QAbstractItemView.EditTriggers是几个常量的组 ...

  5. PyQt设计流程

    Qt designer 设计流程:  创建一个 PyQt4 的步骤,通常的方法是用 QtDesigner 工具创建 GUI 界面.可以在窗口  上添加部件,并可以对部件进行一些属性配置.一般的过程如下 ...

  6. pyqt5 动画学习(一) 改变控件大小

    入坑pyqt也有半年了,由于人们对事物的审美,静态界面已经不能满足用户,而动画却给人眼前一亮,so,今天来学习pyqt的动画了 由于资料真的是太少,本人也是有啃外国佬的英文进行摸索学习,可能也是触及皮 ...

  7. python3 发生器 迭代器 内置函数 协程 哈哈我又回来啦

    唉 犯傻了,干了一件虽有一点点道理的事情,但是却完全没有效果,我是不是傻,浪费了这么多时间在一件不可能的事情上,果然效果比道理更重要... 被一些琐事耽搁几天,python的学习都给我停了,擦!不过一 ...

  8. GUI学习之三——QObject学习总结

    鉴于PyQt控件的继承关系,我们先学习PyQt控件的基类——QObject.  一.所有的QT对象的基类 我们先看一下PyQt里空间的继承关系,稍微改一下代码,显示出继承关系 from PyQt5.Q ...

  9. QT学习之windows下安装配置PyQt5

    windows下安装配置PyQt5 目录 为什么要学习QT 命令行安装PyQt5以及PyQt5-tools 配置QtDesigner.PyUIC及PyRcc 为什么要学习QT python下与界面开发 ...

随机推荐

  1. 福州大学软件工程1816 | W班 第7次作业成绩排名

    写在前面 汇总成绩排名链接 1.作业链接 第七次作业--项目需求分析(团队) 2.评分准则 本次作业映射总分为100分+贡献度得分,由以下部分组成: 引言(5 points) . 用户场景(15 po ...

  2. 如何入门vue之一

    入门vue 首先从vue的指令开始学起. vue的指令: v-if  根据是否得到的布尔值进行是否显示. v-show:根据是否得到的布尔值是否显示.不同的地方在于隐藏是style隐藏. v-on 监 ...

  3. 通过爬虫程序深入浅出java 主从工作模型

    随手做的爬虫程序在   https://github.com/rli07/master_java/blob/master/spider.zip  可下载. 这是我做的系统学习图, 可以参考一下 系统架 ...

  4. [转帖]Centos7 yum安装Chrome浏览器

    Centos7 yum安装Chrome浏览器 https://www.cnblogs.com/ianduin/p/8727333.html以及https://blog.csdn.net/libaine ...

  5. PL/SQL如何调试sql语句、存储过程

    一直以来,我总是在sql的工具,比如sql server.navicat等中执行sql语句来发现问题自己写的sql中的问题,结果被问起时,让人贻笑大方! 那么如何调试成白行的存储过程?如何调试成百行s ...

  6. vue前端框架面试问题汇总

    1.active-class是哪个组件的属性?嵌套路由怎么定义?答:vue-router模块的router-link组件. 2.怎么定义vue-router的动态路由?怎么获取传过来的动态参数? 答: ...

  7. Oracle 中sql文件的导入导出

    导出 一般导入的时候我用的是命令行 imp c##zs/@orcl fromuser=c##zs touser=c##zs file=D:\java\.dmp ignore=y c##zs 是创建的用 ...

  8. java学习之—合并两个数组并排序

    /** * 合并两个数组并排序 * Create by Administrator * 2018/6/26 0026 * 下午 4:29 **/ public class MergeApp { pub ...

  9. 五、compose 部署 GitLab 应用

    1.我们部署的是sameersbn/docker-gitlab这个镜像. docker pull sameersbn/gitlab 2.配置文件,我们不需要去run它,只需要先下载一个compose的 ...

  10. DEV GridControl/TreeList 中ShowingEditor使用

    ShowingEditor事件对我来说就是控制单元格的编辑属性,在特定场景中(TreeList中要求子节点某些列可编辑,父节点不可编辑)就需要使用此事件来实现,与此同时,上一篇也介绍了特定场景单元格样 ...