开个坑,关于应用PyQt5的一系列文章。

一、背景

作为快乐的程序员,当然要有一个快乐辞职方式,先看看demo:程序员正确的辞职方式
今天我们学着用PyQt5来写一个类似的小程序吧!

二、需求拆解

功能分解:
1.主窗口有两个按钮:同意和拒绝;
2.点击同意弹出界面,点击拒绝随机移动主窗口。

三、代码设计

3.1布局主窗口

class CMainWindow(QtWidgets.QWidget):def __init__(self, p=None):QtWidgets.QWidget.__init__(self, p)self._init_ui()def _init_ui(self):"""功能:生成两个按钮"""self.setFixedSize(WINDOW_WIDTH, WINDOW_HEIGHT)self.setWindowTitle("离职批准")layout = QtWidgets.QHBoxLayout()self.setLayout(layout)btn_accept = QtWidgets.QPushButton(self)  # 同意按钮btn_accept.setText("同意")layout.addWidget(btn_accept)btn_accept.clicked.connect(self._click_accept)btn_reject = QtWidgets.QPushButton(self)  # 拒绝按钮btn_reject.setText("拒绝")btn_reject.clicked.connect(self._click_reject)layout.addWidget(btn_reject)

3.2同意按钮

点击弹出按钮,回调函数弹出感谢窗口

    def _click_accept(self):"""功能:点击同意"""reply = QtWidgets.QMessageBox.information(self, '已批准', '谢谢领导批准!', QtWidgets.QMessageBox.Yes)if reply:self.close()

3.3拒绝按钮

点击拒绝按钮,回调移动窗口函数

    def _click_reject(self):"""功能:点击拒绝"""self._move_randomly()

3.4主窗口随机移动

    def _move_randomly(self):"""功能:随机移动"""desktop = QtWidgets.QDesktopWidget()geo = desktop.availableGeometry()  # 获取工作屏幕的大小参数def get_random_pos():""":return:返回在屏幕上的随机一个点"""pos_x = int(random.random() * geo.width())pos_y = int(random.random() * geo.height())return (pos_x, pos_y)def get_pos():""":return:返回一个不在当前窗口内的点"""x, y = get_random_pos()while self.geometry().contains(QtCore.QPoint(x, y)):x, y = get_random_pos()return (x, y)self.resize(WINDOW_WIDTH, WINDOW_HEIGHT)self.move(*get_pos())

源代码

import random
from PyQt5 import QtWidgets
from PyQt5 import QtCoreWINDOW_WIDTH = 500
WINDOW_HEIGHT = 200class CMainWindow(QtWidgets.QWidget):def __init__(self, p=None):QtWidgets.QWidget.__init__(self, p)self._init_ui()def _init_ui(self):"""功能:生成两个按钮"""self.setFixedSize(WINDOW_WIDTH, WINDOW_HEIGHT)self.setWindowTitle("离职批准")layout = QtWidgets.QHBoxLayout()self.setLayout(layout)btn_accept = QtWidgets.QPushButton(self)  # 同意按钮btn_accept.setText("同意")layout.addWidget(btn_accept)btn_accept.clicked.connect(self._click_accept)btn_reject = QtWidgets.QPushButton(self)  # 拒绝按钮btn_reject.setText("拒绝")btn_reject.clicked.connect(self._click_reject)layout.addWidget(btn_reject)def _click_accept(self):"""功能:点击同意"""reply = QtWidgets.QMessageBox.information(self, '已批准', '谢谢领导批准!', QtWidgets.QMessageBox.Yes)if reply:self.close()def _click_reject(self):"""功能:点击拒绝"""self._move_randomly()def _move_randomly(self):"""功能:随机移动"""desktop = QtWidgets.QDesktopWidget()geo = desktop.availableGeometry()  # 获取工作屏幕的大小参数def get_random_pos():""":return:返回在屏幕上的随机一个点"""pos_x = int(random.random() * geo.width())pos_y = int(random.random() * geo.height())return (pos_x, pos_y)def get_pos():""":return:返回一个不在当前窗口内的点"""x, y = get_random_pos()while self.geometry().contains(QtCore.QPoint(x, y)):x, y = get_random_pos()return (x, y)self.resize(WINDOW_WIDTH, WINDOW_HEIGHT)self.move(*get_pos())def main():app = QtWidgets.QApplication([])main_window = CMainWindow()main_window.show()app.exec_()if __name__ == "__main__":main()

PyQt5系列-网红辞职小程序-[1]相关推荐

  1. 红通告小程序_博主招募新选择,“红通告”助力红人推广

    备注信息: 随着社交平台不断的扩展,爆火网红类型异常多样化,越来越多人想要投身进博主这个行业.无论是账号已相对成熟的kol,还是初出茅庐的koc,都会在接推广的问题上犯难.一个是为了视频或者图文能持续 ...

  2. taro 重新加载小程序_taro-music一款开源网易云音乐小程序

    简介 taro-music 是基于taro + taro-ui + redux + react-hooks + typescript 开发的网易云音乐小程序,目前正在使用react-hooks重构中. ...

  3. 微信小程序开发系列七:微信小程序的页面跳转

    微信小程序开发系列教程 微信小程序开发系列一:微信小程序的申请和开发环境的搭建 微信小程序开发系列二:微信小程序的视图设计 微信小程序开发系列三:微信小程序的调试方法 微信小程序开发系列四:微信小程序 ...

  4. 微信小程序开发系列五:微信小程序中如何响应用户输入事件

    微信小程序开发系列教程 微信小程序开发系列一:微信小程序的申请和开发环境的搭建 微信小程序开发系列二:微信小程序的视图设计 微信小程序开发系列三:微信小程序的调试方法 微信小程序开发系列四:微信小程序 ...

  5. 微信小程序开发系列四:微信小程序之控制器的初始化逻辑

    微信小程序开发系列教程 微信小程序开发系列一:微信小程序的申请和开发环境的搭建 微信小程序开发系列二:微信小程序的视图设计 微信小程序开发系列三:微信小程序的调试方法 这个教程的前两篇文章,介绍了如何 ...

  6. 微信小程序开发系列二:微信小程序的视图设计

    大家如果跟着我第一篇文章 微信小程序开发系列一:微信小程序的申请和开发环境的搭建 一起动手,那么微信小程序的开发环境一定搭好了.效果就是能把该小程序的体验版以二维码的方式发送给其他朋友使用. 这个系列 ...

  7. 红酒类小程序APP开发源码交付

    红酒类小程序开发,红酒类APP开发源码交付.红酒类在各种餐桌上,酒是不可或缺的;而伴随着用户针对红酒认同度的提升,绝大多数用户都喜爱品尝高品质的红酒.因而,红酒类网上商城系统APP也就伴随着市场的需求 ...

  8. 开源 | 智能家居场景,基于 AriKiss 配网的微信小程序

    一次偶然的机会,群里某开发者问我为什么他的微信配网出问题了,我跟着回复了些问题,发现并不是那么简单,于是乎帮这位朋友适配了下并成功了,决定在全网首个开源可实现Airkiss配网的微信小程序. 获取源码 ...

  9. 网易云音乐小程序,带后台(SpringBoot)

    目录 1.简介 2.技术栈 3.环境 4.项目后台配置 5.项目展示 6.下载地址 1.简介 此系统是仿网易云音乐 网易云音乐是一款专注于发现与分享的音乐产品,依托专业音乐人.DJ.好友推荐及社交功能 ...

最新文章

  1. linux系统重装后挂载数据盘,Linux重装系统后如何重新挂载数据盘?
  2. Learning ImageMagick 4: 批处理
  3. 基于WINCE6.0的nandflash驱动(基于K9F1G08U0B)
  4. 114. Leetcode 53. 最大子数组和 (动态规划-子序列问题)
  5. hibernate hql语句 投影查询的三种方式
  6. red hat linux挂载u盘,请问怎样在Red Hat 9.0中使用U盘?
  7. 和显卡驱动要配套吗_天天学渲染,你的显卡驱动用对了吗?
  8. hough变换检测圆周_一文解读经典霍夫变换(Hough Transform)
  9. es6 Promise 的含义
  10. QT笔记之VS2010 Qt中导入qrc资源文件
  11. 软件工程第二次课课堂总结
  12. 体验服和平精英服务器维护,和平精英:体验服申请入口
  13. python爬虫之创建表格
  14. AWS创建用户、角色、策略
  15. selenium安装及在python中简单使用
  16. 线性插值改变图像尺寸_数码相机的成像原理、显示屏尺寸、像素的介绍
  17. vba批量合并指定的sheet_Excel VBA 多个工作表合并方法
  18. 安装到部署 火绒安全企业新品究竟有多简?
  19. layui 隐藏表头不生效
  20. 微信裂变如何做到单次活动增长10万微信好友?

热门文章

  1. Promox VE日常维护
  2. 公司建设网站的好处及优势
  3. 购买恩智浦的NFC标签NFC支付系统由中国RFID
  4. 离谱!入职 BYD 一个月,心态崩了。。。
  5. 360病毒|360后缀文件|360勒索病毒|文件被加密为360|中了360勒索病毒怎么办?|数据库文件恢复|数据恢复|
  6. vuecli配置babel-polyfill
  7. html页面循环div,jquery 循环数组输出显示在html页面
  8. bui ajax,BUI 数据交互
  9. BM25算法,python实现(源代码)
  10. Nexus 6P获取CSI(含刷机、root)