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

html5 单页网站商城网站建设建站系统

html5 单页网站,商城网站建设建站系统,天津做网站企业,平面设计一个月能赚多少钱文章目录 前言#xff1a;一、虚拟键盘的实现综合代码 二、为什么选用QWidget而不适用QDialog实现键盘三、从窗体a拉起窗体b后#xff0c;窗体b闪退问题的探讨四、关闭主窗口时子窗口未关闭的问题 前言#xff1a; 本文章主要包含四部分#xff1a; 虚拟键盘的实现#… 文章目录 前言一、虚拟键盘的实现综合代码 二、为什么选用QWidget而不适用QDialog实现键盘三、从窗体a拉起窗体b后窗体b闪退问题的探讨四、关闭主窗口时子窗口未关闭的问题 前言 本文章主要包含四部分 虚拟键盘的实现基于Pyside2)为什么选用QWidget而不适用QDialog实现键盘关于从一个窗体a中拉起另一个窗体b后窗体b闪退的问题探讨关闭主窗口时子窗口未关闭的问题 由于qt5官方的virtualkeyboard库无法适用于公司的应用场景于是需要手写一个virtual keyboard目前是初步实现了但是没有办法全局监听希望后续能有实现全局监听的办法。 已实现功能 作为组件以keyboard.py 形式集成到项目中可切换大小写可按比例附着于屏幕下方项目内多组件共用Keyboard需要作为单例类符合真实键盘键位支持部分特殊字符 待实现功能 全局监听 一、虚拟键盘的实现 从虚拟键盘的交互可以感知其应当作为一个窗体与用户进行交互通常窗体用的较多的是QDialog和QWidget由于QDialog会阻塞其他窗体的交互事件似乎可以通过setModal设置模态或非模态但是笔者尝试后不起作用故这里选择QWidget。 ————— 实现思路 QWidget作为键盘窗体QPushButton作为虚拟键盘的每个按键模拟真实键盘键位为每一行提供一个QHBoxLayout设置一个父layout即QVBoxLayout将所有QHBoxLayout添加进去。通过setGeometry设置窗体位于指定位置使键盘每次出现即附着于屏幕下方设置该类为单例类通过组件点击事件激活虚拟键盘这里重写了QLineEdit的点击事件mouseclickeventkeyboard工具类单例类装饰器 综合代码 代码结构 keyboard.py 键盘实现keyboard_util.py 键盘工具类singleton_util.py 单例类装饰器类enjoy_edit.py QLineEdit示例组件main.py 主程序入口 注代码虽使用PySide2但修改PySide2为PyQt5也可运行 代码已放在github https://github.com/qilin02811/VirtualKeyboard clone后即可运行通过python3 main.py即可运行需安装PySide2环境如果是PyQt5环境应将代码中的依赖修改为PyQt5 示意图 点击文本框后即可拉起键盘并且键盘附着于最下方 二、为什么选用QWidget而不适用QDialog实现键盘 由于QT程序一般有多个窗体我们希望键盘不会被其他窗体阻塞且我们也不希望键盘阻塞其他窗体故上面代码所有窗体均为QWidget而未使用QDialog。 使用QDialog要通过dialog.exec_()来拉起否则不会处理窗口的事件。 并且如果通过exec拉起QDialog必须关闭该dialog后才会响应其他窗体这是实际运行过程中应该避免的。 通过该键盘程序的编写我更倾向于使用QWidget而不是QDialog。 三、从窗体a拉起窗体b后窗体b闪退问题的探讨 由于在窗体a中我通过w QWidget() ,w.show()闪退故考虑使用QDialog q QDialog() q.exec_() 但这样会产生一个问题当处理键盘点击事件完成后想要点击主窗口或其他子窗口事件需要先关闭键盘这不符合我们平常的使用场景我们不希望键盘阻塞其他窗口于是又放弃了QDialog回到QWidget研究闪退问题。 这里给出一段解决闪退问题的示例 发生闪退问题的代码 class ×××(QWidget):def __init__():super().__init()def ×××(self):w QWidget()w.show()未发生闪退问题的代码 class ×××(QWidget):def __init__():super().__init()self.w Nonedef ×××(self):if self.w is None:self.w QWidget(self)self.w.show()推测第一个代码由于w.show()后整个解释器中就不存在w的引用则w.show()后会清除w的实例 第二个代码由于有self.w None的引用故self.w.show()后不会清除self.w的实例 四、关闭主窗口时子窗口未关闭的问题 编写窗体程序时经常出现多个窗体需要逐一关闭的情况我们希望关闭主窗口时能够关闭所有子窗口可以通过重写closeEvent实现 # 逐个关闭所有子widget def closeEvent(self, event):for widget in QApplication.instance().allWidgets():if widget ! self and isinstance(widget, QWidget):widget.close()event.accept()
http://www.hkea.cn/news/14574805/

相关文章:

  • 做网站推广有前景吗网站开发一年多少钱
  • 包工头接活网站app凡客诚品市场份额
  • 电子商务网站建设一般流程图培训网网站源码
  • 花艺企业网站建设规划东莞住建局投诉电话是多少
  • 德惠市建设局网站app官方安装免费下载
  • 莱芜区网站北龙中网 可信网站验证 费用
  • 公司网站 英文网站建设的er图
  • 企业网站首页开发建设银行官网首页网站南山片区
  • 佛山网站建设专业定制网站的运营与维护
  • 肇庆网站关键词优化贸泽电子元器件商城
  • 河南建设工程协会网站局域网网站建设软件
  • 诚信网站体系建设工作总结如何用html在公司的网站上添加栏目路径
  • 网站链接怎么做谷歌搜索引擎google
  • 免费学平面设计的网站网站用绝对路径好还是相对路径seo
  • 营销型网站建站系统个人备案 什么网站
  • 找网站建设需要问什么中装建设市值
  • 网站前端是什么意思360网站免费推广怎么做
  • p2p网站策划金站网.营销型网站
  • 网站制作的总结与体会手机淘宝网页版登陆入口
  • 公司设计网站点开文字进入网站是怎么做的
  • html5手机网站特效个人网站代码html
  • 后台网站设计新闻稿营销
  • 做珠宝的网站资阳地网站seo
  • 摄影招聘网站单县网站建设
  • 网站建设介绍怎么写铁路建设工程网站
  • 荣成市信用建设官方网站酒店网站的规划与建设方案
  • 北京给网站做系统的公司名称自己做网络推广怎么做
  • app扁平化设计网站做网站运营用什么软件
  • 中国工业设计公司长沙百度关键词优化
  • 揭阳网站设计公司discuz破解