引言

1、default、atuoDefault属性仅在父窗口为对话窗才生效,其他窗口类型设置这两个属性没有意义;

2、按钮的按压触发除了鼠标键之外,也可以使用回车键和空格键触发,这两个属性正是控制回车键和空格键按下时按钮的响应行为。

default属性

此属性确认按钮是否为默认按钮,如果按钮被设置为默认按钮,当按下回车键时,此属性设置为True的按钮(即对话框的默认按钮)将自动被按下。请参考后面的“回车键触发按钮按下”的介绍。

default属性的默认值为False,可以通过isDefault()、setDefault(bool)来访问和设置按钮的default属性。

另外,官网上说默认按钮将显示一个附加的框架(取决于gui样式),可能是由于样式设置的问题,老猿没有验证到这点。

atuoDefault属性

atuoDefault属性确认按钮是否为自动默认按钮,如果此属性设置为True,则按钮是自动默认按钮。

在某些图形用户界面样式中,默认按钮的周围有一个额外的边框,最多3个像素或更多。

对于具有父窗口是QDialog 的按钮,此属性的默认值为True;否则默认值为False。

可以使用autoDefault() 、setAutoDefault(bool)来访问或设置按钮的atuoDefault属性。

回车键触发按钮按下时的按钮响应行为

经老猿验证对回车键按下时对话窗按钮的响应情况如下:

1、如果一个对话窗中有多个按钮的default被设置为True,则取决于生成的代码中哪个最后执行setDefault(True),后设置的覆盖前设置的,前面设置的自动将该属性置为False,但图形界面设置的属性值没有变化,即改变的是运行态;

2、如果对话窗中的多个按钮都没有获得焦点,且有个按钮设置了default为True,则回车键会触发该默认按钮按下的操作;

3、如果当前所有按钮都未获取到焦点,也无按钮设置default为True,经老猿验证回车键不会触发任何按钮(包括自动默认按钮)按下,但官网上说会触发焦点链中下一个自动默认按钮(原文:When the dialog has autoDefault buttons but no default button, pressing enter will press either the autoDefault button that currently has focus, or if no button has focus, the next autoDefault button in the focus chain.);

4、如果当前无按钮设置default为True,而获得了焦点的按钮无atuoDefault属性,即不是自动默认按钮,按回车键不会触发任何按钮按下;

5、图形界面设计的自动默认按钮在界面上设置atuoDefault为True时,应用启动后该按钮的Default也自动设置为True,因此此时无其他非自动默认按钮设置了default值为True时,回车键会触发自动默认按钮的按下。在此种情况下:

1>如果有多个按钮在界面上设置atuoDefault为True时,响应的按钮只是其中一个,至于是哪个,老猿验证是最早设计的atuoDefault,但验证案例可能不全,因此结论不一定正确;

2>因此此时的情况并不适合上面所说的第3点和第4点的情况,也并不完全适合第2点的情况,因为老猿验证再多个自动默认按钮存在的情况下,如果程序不改变按钮的default值,则所有自动默认按钮的default值都为True。

空格键触发按钮按下的按钮响应行为

经老猿验证对空格键按下时对话窗按钮的响应情况如下:

1、如果有个按钮获得了焦点,则空格键始终触发该焦点按钮按下;

2、如果无按钮获得焦点,但有按钮设置了default属性值为True,则会触发default属性值为True的按钮按下;

3、如果无按钮获得焦点,也无按钮设置了default属性值为True,则会触发atuoDefault为True的自动默认按钮的按下;

4、如果无按钮获得焦点,也无按钮设置了default或atuoDefault属性值为True,则空格键无响应。


博客地址:https://blog.csdn.net/LaoYuanPython

老猿Python博客文章目录:https://blog.csdn.net/LaoYuanPython/article/details/98245036

PyQt(Python+Qt)学习随笔:Designer中PushButton按钮default、atuoDefault属性的更多相关文章

  1. PyQt(Python+Qt)学习随笔:视图中类QAbstractItemView的dragDropOverwriteMode属性不能覆盖写的问题

    老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 在<PyQt(Python+Qt)学习随笔:视图中类QAbstractItemView的dra ...

  2. PyQt(Python+Qt)学习随笔:视图中类QAbstractItemView的dragDropOverwriteMode属性

    老猿Python博文目录 老猿Python博客地址 一.属性的作用 dragDropOverwriteMode属性用于控制视图的拖放行为,如果其值为True,则视图中选定的数据将在拖拽数据放下时被覆盖 ...

  3. PyQt(Python+Qt)学习随笔:QAbstractItemView的dragEnabled和dragDropMode属性的关系

    老猿Python博文目录 老猿Python博客地址 在<PyQt(Python+Qt)学习随笔:QAbstractItemView的dragEnabled属性的困惑>中,老猿觉得dragE ...

  4. PyQt(Python+Qt)学习随笔:gridLayout的layoutRowMinimumHeight和layoutColumnMinimumWidth属性

    Qt Designer中网格布局(gridLayout)中,layoutRowMinimumHeight和layoutColumnMinimumWidth两个属性分别设置网格布局中各行的最小高度和各列 ...

  5. PyQt(Python+Qt)学习随笔:gridLayout的layoutRowStretch和layoutColumnStretch属性

    Qt Designer中网格布局中,layoutRowStretch和layoutColumnStretch两个属性分别设置网格布局中行之间和列之间的拉伸因子,如图: 但是QGridLayout并没有 ...

  6. PyQt(Python+Qt)学习随笔:gridLayout的layoutHorizontalSpacing和layoutVerticalSpacing属性

    layoutHorizontalSpacing和layoutVerticalSpacing属性在Qt Designer中是网格布局(gridLayout)和表单布局(formLayout)都有的属性, ...

  7. PyQt(Python+Qt)学习随笔:QAbstractItemView的verticalScrollMode和horizontalScrollMode属性

    老猿Python博文目录 老猿Python博客地址 一.概述 verticalScrollMode和horizontalScrollMode属性用于控制视图如何在垂直方向和水平方向滚动内容.滚动可以按 ...

  8. PyQt(Python+Qt)学习随笔:QTreeView树形视图的allColumnsShowFocus属性

    老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 QTreeView树形视图的allColumnsShowFocus属性用于控制是否使视图中的所有列显 ...

  9. PyQt(Python+Qt)学习随笔:QTreeView树形视图的animated属性

    老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 QTreeView树形视图的animated属性用于控制视图在展开或收缩分支时是否展示动画,如果对应 ...

  10. PyQt(Python+Qt)学习随笔:QTreeView树形视图的sortingEnabled属性

    老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 QTreeView树形视图的sortingEnabled属性用于控制视图中的数据是否启用按表头排序, ...

随机推荐

  1. Flask补充内容

    关键字: 一,过滤器 二,增删改查 一,过滤器 1,概念:过滤器的本质就是函数.有时候我们不仅仅只是需要输出变量的值,我们还需要修改变量的显示,甚至格式化.运算等等,而在模板中是不能直接调用 Pyth ...

  2. Mongodb和Hbase的对比

    Mongodb和Hbase的对比 1.Mongodb bson文档型数据库,整个数据都存在磁盘中,hbase是列式数据库,集群部署时每个familycolumn保存在单独的hdfs文件中. 2.Mon ...

  3. [Docker镜像] 关于阿里云容器镜像服务的使用(以天池比赛提交镜像为例)

    最近在参加天池比赛,由于比赛需要使用阿里云容器镜像服务完成线上预测任务,所以花费了3-4天的时间了解并使用Docker完成相关镜像操作,在此分享下我学习的内容,以下是本文的目录结构: 介绍 镜像 容器 ...

  4. ISO/OSI参考模型

    ISO/OSI参考模型: 1.应用层:提供应用程序间通信.应用层与应用程序界面沟通,以达到展示给用户的目的.常见的协议:HTTP.HTTPS.FTP.TELNET.SSH.SMTP等 2.表示层:处理 ...

  5. 在Linux下的安装mysql-5.7.28 心得总结

    mysql-5.7.28 在Linux下的安装教程图解 这篇文章主要介绍了mysql-5.7.28 的Linux安装,本文通过图文并茂的形式给大家介绍的非常详细,具有一定的参考借鉴价值,希望给有需要的 ...

  6. ceph的ISCSI GATEWAY

    前言 最开始接触这个是在L版本的监控平台里面看到的,有个iscsi网关,但是没看到有类似的介绍,然后通过接口查询到了一些资料,当时由于有比较多的东西需要新内核,新版本的支持,所以并没有配置出来,由于内 ...

  7. mysql_用命令行备份数据库

    MySQL数据库使用命令行备份|MySQL数据库备份命令 例如: 数据库地址:127.0.0.1 数据库用户名:root 数据库密码:pass 数据库名称:myweb 备份数据库到D盘跟目录 mysq ...

  8. 这 12 款 IDEA 插件你用过几款?

    搞 Java开发用什么软件,当然是神器idea了,那么,idea的插件对于你来说就是必不可少的了,不仅可以提高自己的编码效率,还可以减轻工作时的枯燥烦闷.接下来就来说说,我平时敲代码用的什么插件吧. ...

  9. arm-linux openssl移植

    从openssl官网下载openssl https://www.openssl.org/source/ 1.解压到linux中 2. ./config no-asm shared --prefix=$ ...

  10. 这个厉害了,阿里P7大佬都在看的SpringCloud 总结,帮你梳理全部知识点!

    微服务 微服务架构是一种以一些微服务来替代开发单个大而全应用的方法,每一个小服务运行在自己的进程里,并以轻量级的机制来通信, 通常是 HTTP RESTful API.微服务强调小快灵, 任何一个相对 ...