当前位置: 首页 > news >正文

南京铁路建设网站珞凡wordpress

南京铁路建设网站,珞凡wordpress,wordpress 主题 响应,wordpress 伪静态化本文目录 PyQt5桌面应用系列鼠标不要钱#xff0c;手腕还不要钱吗#xff1f;PyQt5源程序python文件资源定义界面定义文件 技术要素资源文件StyleSheetsQMainWindow设置窗体几何 结论 PyQt5桌面应用系列 PyQt5桌面应用开发#xff08;1#xff09;#xff1a;需求分析 PyQ… 本文目录 PyQt5桌面应用系列鼠标不要钱手腕还不要钱吗PyQt5源程序python文件资源定义界面定义文件 技术要素资源文件StyleSheetsQMainWindow设置窗体几何 结论 PyQt5桌面应用系列 PyQt5桌面应用开发1需求分析 PyQt5桌面应用开发2事件循环 PyQt5桌面应用开发3并行设计 PyQt5桌面应用开发4界面设计 PyQt5桌面应用开发5对话框 PyQt5桌面应用开发6文件对话框 PyQt5桌面应用开发7文本编辑语法高亮与行号 PyQt5桌面应用开发8从QInputDialog转进到函数参数传递 PyQt5桌面应用开发9经典布局QMainWindow PyQt5桌面应用开发10界面布局基本支持 PyQt5桌面应用开发11摸鱼也要讲基本法之桌面精灵 鼠标不要钱手腕还不要钱吗 每当打工人开始摸鱼的时候打工人就会摸鱼。反正老板买的鼠标不要钱我们来摸一个鼠标点击游戏的大鱼。我们要做个按钮精灵在屏幕上跑来跑去鼠标点一下另外一个数字精灵就显示点击次数。这样我们就可以开心的测试自己准确操作鼠标的能力可以采取计时点击也可以采取点击FF次的时间。 游戏界面大概就是这样由于录屏软件的功能和保密的原因除了两个跑来跑去的烦人精之外的地方都被录成黑色实际运行中这两玩意就在当前显示屏的最上层跑来跑去。 当时鼠标不要钱 and 手腕也不要钱的时候就可以玩出来这样的场景。程序键盘控制参见1 这个程序有几个要点 报表点击次数显示在QLCDNumber中当然我们都认识16进制那就显示16进制显得更酷数据点击次数的数据就记录在QLCDNumber的值中。交互要求没有窗口点击按钮在窗口范围内随机跑计数控件追着点击按钮跑。 PyQt5源程序 这里首先就把代码发出来。 python文件 import importlib import subprocess import sys from random import randintfrom PyQt5 import uic from PyQt5.QtCore import QSize, Qt, QFile, QIODevice, QRect from PyQt5.QtGui import QIcon, QKeyEvent, QKeySequence from PyQt5.QtWidgets import QMainWindow, QApplication, QPushButton, QLCDNumber, QStyleFactory# pyinstaller counting.py -w -y --add-data countingmainwindow.ui;. --add-data resources_rc.py;. # produce distributed version in windows, run it first to get resouces_rc.py# workaround with qrc def make_rc(fn: str):if fn.endswith(.qrc):name, _ fn.split(.)with subprocess.Popen([pyrcc5, fn, -o, f{name}_rc.py], stdoutsubprocess.PIPE) as proc:msg proc.stdout.read()if len(msg) 0:raise IOError(ferror compile qrc file: {msg})# load it or compile and load it try:importlib.import_module(fresources_rc) except:make_rc(resources.qrc)importlib.import_module(fresources_rc)class CountingMainWindow(QMainWindow):def __init__(self):super(CountingMainWindow, self).__init__()uic.loadUi(countingmainwindow.ui, self)self.pushButton: QPushButtonself.lcdNumber: QLCDNumberself.pushButton.setObjectName(btn)self.pushButton.setIconSize(QSize(48, 48))self.pushButton.setIcon(QIcon(:imgs/click.png))self.pushButton.setText()self.pushButton.setFixedSize(100, 100)self.lcdNumber.setFixedSize(100, 100)self.lcdNumber.setDigitCount(2)self.lcdNumber.setHexMode()self.pushButton.clicked.connect(self.move_widgets_like_crazy)self.pushButton.clicked.connect(lambda check: self.lcdNumber.display(self.lcdNumber.intValue() 1))self.lcdNumber.overflow.connect(lambda: self.lcdNumber.display(0))self.setMenuBar(None)self.setStatusBar(None)self.setAttribute(Qt.WA_TranslucentBackground)self.setWindowFlags(Qt.FramelessWindowHint)self.setWindowState(Qt.WindowFullScreen)def move_widgets_like_crazy(self, check: bool):self.pushButton: QPushButtonself.lcdNumber: QLCDNumber# geometry return position related to its parent# relocated pushbuttonrect_window: QRect self.geometry()rect_button: QRect self.pushButton.geometry()x randint(10, rect_window.width() - rect_button.width() - 10)y randint(10, rect_window.height() - rect_button.height() - 10)rect_button.setX(x)rect_button.setY(y)self.pushButton.setGeometry(rect_button)# lcdnumber moving toward pushbuttonrect_lcd: QRect self.lcdNumber.geometry()dx rect_button.x() - rect_lcd.x()rect_lcd.setX(rect_lcd.x() dx // 3)dy rect_button.y() - rect_lcd.y()rect_lcd.setY(rect_lcd.y() dy // 3)self.lcdNumber.setGeometry(rect_lcd)def keyPressEvent(self, event: QKeyEvent) - None:if event.matches(QKeySequence.Cancel):self.close()if event.key() Qt.Key_C:self.pushButton.clicked.emit(False)if event.key() Qt.Key_R:self.lcdNumber.display(0)super(CountingMainWindow, self).keyPressEvent(event)def read_qss_file(filename: str) - str:file QFile(filename)if not file.open(QIODevice.ReadOnly | QIODevice.Text):raise IOError(fCannot open file: {filename})qss str(file.readAll(), encodingutf-8)return qssif __name__ __main__:app QApplication([])app.setStyle(QStyleFactory.create(Fusion))app.setStyleSheet(read_qss_file(:stylesheets/style.qss))mw CountingMainWindow()mw.show()sys.exit(app.exec_())资源定义 程序还包括了一个资源文件附带一个png的图标一个qss文件和一个界面的ui文件。 RCCqresourcefileimgs/click.png/filefilestylesheets/style.qss/file/qresource /RCC图标放于imgs/目录qss文件放于stylesheets/目录。 QPushButton#btn {background-color: cyan;border-radius: 15px;border: 1px solid black;padding: 5px; }QPushButton#btn:hover {background-color: cyan;border-radius: 15px;border: 1px solid red;padding: 5px;padding-bottom: 1px; }QPushButton#btn:pressed {background-color: #8E0000;border-radius: 15px;border: 1px solid red;padding: 5px;padding-bottom: 3px; }QLCDNumber {background-color: lightgray;color: #FE5F01;border-radius: 15px;border: 1px solid black;padding: 5px; }程序运行时如果pyrcc5在目录那么很简单只要上面的三个文件按照qrc中的目录放置就能自动产生resource_rc.py并且自动导入。 pyrcc5 resouces.qrc -o resources_rc.py界面定义文件 designer生成的ui文件最简单就随便拉一个QMainWindow上面丢一个按钮QPushButton一个LCDNumber保存就行。 ?xml version1.0 encodingUTF-8? ui version4.0classmy_ui::CountingMainWindow/classwidget classQMainWindow namemy_ui::CountingMainWindowproperty namegeometryrectx0/xy0/ywidth803/widthheight402/height/rect/propertyproperty namewindowTitlestringCountingMainWindow/string/propertywidget classQWidget namecentralwidgetwidget classQPushButton namepushButtonproperty namegeometryrectx10/xy10/ywidth136/widthheight41/height/rect/propertyproperty namesizePolicysizepolicy hsizetypeMinimum vsizetypeExpandinghorstretch0/horstretchverstretch0/verstretch/sizepolicy/propertyproperty namefontfontpointsize24/pointsize/font/propertyproperty nametextstringClicked:/string/property/widgetwidget classQLCDNumber namelcdNumberproperty namegeometryrectx410/xy180/ywidth64/widthheight23/height/rect/propertyproperty namesizePolicysizepolicy hsizetypeMinimum vsizetypeExpandinghorstretch0/horstretchverstretch0/verstretch/sizepolicy/propertyproperty namefontfontpointsize24/pointsize/font/propertyproperty namesmallDecimalPointboolfalse/bool/propertyproperty namemodeenumQLCDNumber::Hex/enum/property/widget/widgetwidget classQStatusBar namestatusbar//widgetresources/connections/ /ui技术要素 这个游戏中展示了大量好玩的东西。 资源文件 资源文件的定义和访问是一个很好的方式pyrcc5命令把图形文件、数据文件编译成二进制的形式在程序中就能够以:imgs/click.png:stylesheets/style.qss 这样的形式访问。在打包文件或者提供程序的时候只需要提供pyrcc5生成的py文件就行。 这里值得注意的时读入qss文件的那个函数。 with open(:stylesheets/style.qss) as fid:print(fid.read())经过测试是不行的QFile才行。但是QFile读出来的是QByteArray要用str来转换成字符串。 def read_qss_file(filename: str) - str:file QFile(filename)if not file.open(QIODevice.ReadOnly | QIODevice.Text):raise IOError(fCannot open file: {filename})qss str(file.readAll(), encodingutf-8)return qss图形文件用QIcon(:imgs/click.png)可以访问。 StyleSheets 这个程序里面采用了setStyleSheet的方式来设置控件的显示方式也是一个很有意思的话题。因为这个话题很大就不再这里详细讲述。 QMainWindow设置 为了设置成背景透明全屏疯跑对QMainWindow进行了设置。 self.setAttribute(Qt.WA_TranslucentBackground) self.setWindowFlags(Qt.FramelessWindowHint) self.setWindowState(Qt.WindowFullScreen)第一个函数是属性WindowAttribute这组枚举类型用WA开头背景透明就是其中之一。这个Attribute列表那么长我就不列了Attribute。 setWindowFlags是设置窗口的特性。枚举列表在窗体特性。 setWindowState是设置窗口的状态。 Qt::WindowNoState 常规状态Qt::WindowMinimized 最小化状态Qt::WindowMaximized 最大化状态Qt::WindowFullScreen 全屏状态Qt::WindowActive 活动状态例如键盘输入焦点 这三个状态一设就有了我们的按钮精灵可以到处跑。 窗体几何 这段让按钮到处跑的代码中使用geometry和setGeometry这一对函数来实现。这一对函数获得的是一个QRect包括xywh位置坐标左上角和长宽。这些尺寸都是相对于夫控件来定义的。 def move_widgets_like_crazy(self, check: bool):self.pushButton: QPushButtonself.lcdNumber: QLCDNumber# geometry return position related to its parent# relocated pushbuttonrect_window: QRect self.geometry()rect_button: QRect self.pushButton.geometry()x randint(10, rect_window.width() - rect_button.width() - 10)y randint(10, rect_window.height() - rect_button.height() - 10)rect_button.setX(x)rect_button.setY(y)self.pushButton.setGeometry(rect_button)# lcdnumber moving toward pushbuttonrect_lcd: QRect self.lcdNumber.geometry()dx rect_button.x() - rect_lcd.x()rect_lcd.setX(rect_lcd.x() dx // 3)dy rect_button.y() - rect_lcd.y()rect_lcd.setY(rect_lcd.y() dy // 3)self.lcdNumber.setGeometry(rect_lcd)结论 实现桌面精灵在PyQt5里面很简单设置窗口的属性就可以PyQt5可以把资源文件整合到程序中作为一个py文件在Qt5中就直接编译到exe中控件的直接定位用geometry和setGoemetry完成xy的数值是相对于父节点的左上角定义的。 作弊码按C疯狂点击按空格相当于点击按R重置技术按ESC退出。 ↩︎
http://www.tj-hxxt.cn/news/132645.html

相关文章:

  • 南通网站排名优化报价wordpress改logo
  • 商贸企业网站建设设计方案做网站源码
  • 2019年 dede网站无锡网站制作工具
  • 婚礼策划网站净化网络环境网站该怎么做
  • 北京网站seo优化排名公司网站建设与维护方式是什么
  • 静态网站开发实训的目的内蒙古住房建设厅网站
  • 如何给网站添加关键词巩义市网站建设
  • 教育网站制作哪个好自己免费建站平台推荐
  • 深圳做积分商城网站设计九冶建设有限公司官方网站
  • jsp做网站用到的软件wordpress指定上传目录
  • 网站 app 哪个先做上海植物租赁做网站
  • 专业的网站制作专业公司网站建设策划书范文六篇精选
  • 教育网站制作开发网页版梦幻西游手游官网
  • 怎么用ps做网站首页背景图片企业网站手机版源码下载
  • 重庆网站seo建设智慧营销系统平台
  • 制作一个购物网站我的世界皮肤网站做
  • 一般做淘宝的素材都有哪个网站建网站怎么搭建自己的服务器
  • 大气的网站源码西乡做网站哪家便宜
  • 用vs2010做的网站济南cms建站
  • WordPress缩略图边框阴影武夷山网站建设wzjseo
  • 电商网站的支付模块怎么做互联网开发软件
  • 常州做网站包括哪些自助网站免费注册
  • 网站建设投放广告网站 mysql数据库 字符
  • 大连网站开发公司shepiguo贵州企业网站开发公司
  • 郑州网站建设专注乐云seo万能素材库视频
  • 设计师接私单网站网站的术语
  • 淘宝上找人做网站wordpress网站更改主题信息
  • 企业为什么要网站建设个人怎么做网页
  • 自己做网站创业seo网站建设接单
  • 网站建设行业论坛上海市网站制作