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

福建漳州网站建设公司wordpress typecho 大数据

福建漳州网站建设公司,wordpress typecho 大数据,枣庄市市中区建设路网站,从化门户网站建设文章目录 前言#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/14588055/

相关文章:

  • 长沙网站运营外包公司网络推广
  • 重庆哪个网站建设比较好福建鞋子做淘宝图片网站
  • 网络营销策划书的范文面包网站seo
  • 下载站用什么cms深圳市龙华区地图
  • 广西住房城乡建设网站外贸是做什么的工资一般多少
  • 网站建设方案预计效果网站推广多少钱一年
  • 自定义导航网站 源码提供网站建设电话
  • 专门看广告的网站宜宾做网站公司
  • 网站转入备案邯郸网站制作官网
  • 网站页面相似度查询工具广州 网站开发公司
  • 昆明做网站做的好的公司有哪些软文之家
  • 站酷网入口容桂网站建设哪家公司好
  • 湘阴县住房建设局网站网站服务费
  • 广州企业建站摄影网站制作步骤html
  • 大连大连建设工程信息网站建设工程消防网站
  • 优化企业网站排名要多少钱网络运营培训哪里有学校
  • 东莞网站seo公司上海网站开发一对一培训
  • wordpress全站ajax主题嵌入字体的网站
  • centos系统怎么做网站c 做网站怎么发布
  • 网站建设学习步骤八宝山做网站公司
  • 北京 网站设计找时代创信好网站开发人员的岗位职责
  • 国内搜索引擎网站中文网站做google广告好吗
  • 建设部网站官网证书编号智能建站免费
  • 崆峒区城乡建设局网站万网是什么网站
  • 杭州做网站哪里好三明网站seo
  • 网站如何建设成直播间高端网站建设专业公司
  • 杭州做网站的好公司有哪些建设摩托车官网商城踏板
  • 医院网站建设中标有没有做3d衣服模型网站
  • 网站功能项目报价WordPress文章多图分页
  • 做网站需要用到那些软件亚洲室内设计公司排名