Pyside6:QDialog按钮变为中文

2024-04-25 19:52

本文主要是介绍Pyside6:QDialog按钮变为中文,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

如果在Qt Designer中创建了一个Qdialog,自带按钮的类型,那么在Designer中显示是中文,但在运行时将变成英文。

如果程序不需要进行国际化,只在国内使用,那么进行中文化的操作还是有必要的,其实方式很简单,按钮组是基于QDialogButtonBox实现的,只要更改QDialogButtonBox的文本内容即可。

# 关键代码
self.ui.buttonBox.button(QDialogButtonBox.Save).setText('保存')
self.ui.buttonBox.button(QDialogButtonBox.Cancel).setText('取消')

 通过修改对应的按钮枚举,即可修改对应文本。

按钮枚举:

  • QDialogButtonBox.Ok:确定
  • QDialogButtonBox.Save:保存
  • QDialogButtonBox.SaveAll:全部保存
  • QDialogButtonBox.Open:打开
  • QDialogButtonBox.Yes:是
  • QDialogButtonBox.YesToAll:全是
  • QDialogButtonBox.No:否
  • QDialogButtonBox.NoToAll:全否
  • QDialogButtonBox.Abort:中止
  • QDialogButtonBox.Retry:重试
  • QDialogButtonBox.Ignore:忽略
  • QDialogButtonBox.Close:关闭
  • QDialogButtonBox.Cancel:取消
  • QDialogButtonBox.Discard:丢弃
  • QDialogButtonBox.Help:帮助
  • QDialogButtonBox.Apply:应用
  • QDialogButtonBox.Reset:重置
  • QDialogButtonBox.RestoreDefaults:恢复默认

如果每次添加一个QDialog每次都得添加这些代码就很麻烦,那本文就提供几个简单的解决方案来统一更换中文。

一、派生基础QDialog

 派生一个最基础的QDialog,然后在这个QDialog中统一修改QDialogButtonBox的文本即可,那么每次要使用相应的QDialog继承派生类即可。

class BaseCNDialog(QDialog):def exec(self):button_box = self.findChild(QDialogButtonBox)if button_box:if button_box.button(QDialogButtonBox.Save):button_box.button(QDialogButtonBox.Save).setText('保存')if button_box.button(QDialogButtonBox.Cancel):button_box.button(QDialogButtonBox.Cancel).setText('取消')if button_box.button(QDialogButtonBox.Open):button_box.button(QDialogButtonBox.Open).setText('打开')return super().exec()

部分代码说明:

  • 由于Dialog展示时需要调用exec(),因此把按钮的文本替换放在exec()中比较合适
  • 需要使用findChild来判断Qdialog是否使用到了QDialogButtonBox
  • 需要判断button_box.button(QDialogButtonBox.Save)为空来确定相应的按钮是否存在,存在才进行文本替换

调用时直接继承基类即可: 

class TestDialog(BaseCNDialog):def __init__(self, *args, **kwargs):super().__init__(*args, **kwargs)self.ui = Ui_Dialog()self.ui.setupUi(self)

 二、派生基础QDialogButtonBox(不推荐)

第二种方式就简单粗暴了,既然调用的是QDialogButtonBox,那么直接派生它就比较直接,但不方便的地方在于如果使用了Qt Designer,那么需要对Designer中的QDialogButtonBox进行提升。

class BaseDialogButtonBox(QDialogButtonBox):def setStandardButtons(self, buttons):super().setStandardButtons(buttons)if self.button(QDialogButtonBox.Save):self.button(QDialogButtonBox.Save).setText('保存')if self.button(QDialogButtonBox.Cancel):self.button(QDialogButtonBox.Cancel).setText('取消')if self.button(QDialogButtonBox.Open):self.button(QDialogButtonBox.Open).setText('打开')

记住,如果在Designer中需要提升,否则无法使用:

三、总结 

除了以上两种常用方式,其实还有不少方式,比如混入、装饰器等等,不过还是推荐派生基础QDialog最方便。 

 

这篇关于Pyside6:QDialog按钮变为中文的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/935641

相关文章

中文分词jieba库的使用与实景应用(一)

知识星球:https://articles.zsxq.com/id_fxvgc803qmr2.html 目录 一.定义: 精确模式(默认模式): 全模式: 搜索引擎模式: paddle 模式(基于深度学习的分词模式): 二 自定义词典 三.文本解析   调整词出现的频率 四. 关键词提取 A. 基于TF-IDF算法的关键词提取 B. 基于TextRank算法的关键词提取

vscode中文乱码问题,注释,终端,调试乱码一劳永逸版

忘记咋回事突然出现了乱码问题,很多方法都试了,注释乱码解决了,终端又乱码,调试窗口也乱码,最后经过本人不懈努力,终于全部解决了,现在分享给大家我的方法。 乱码的原因是各个地方用的编码格式不统一,所以把他们设成统一的utf8. 1.电脑的编码格式 开始-设置-时间和语言-语言和区域 管理语言设置-更改系统区域设置-勾选Bata版:使用utf8-确定-然后按指示重启 2.vscode

C# 防止按钮botton重复“点击”的方法

在使用C#的按钮控件的时候,经常我们想如果出现了多次点击的时候只让其在执行的时候只响应一次。这个时候很多人可能会想到使用Enable=false, 但是实际情况是还是会被多次触发,因为C#采用的是消息队列机制,这个时候我们只需要在Enable = true 之前加一句 Application.DoEvents();就能达到防止重复点击的问题。 private void btnGenerateSh

解决Office Word不能切换中文输入

我们在使用WORD的时可能会经常碰到WORD中无法输入中文的情况。因为,虽然我们安装了搜狗输入法,但是到我们在WORD中使用搜狗的输入法的切换中英文的按键的时候会发现根本没有效果,无法将输入法切换成中文的。下面我就介绍一下如何在WORD中把搜狗输入法切换到中文。

sqlite不支持中文排序,采用java排序

方式一 不支持含有重复字段进行排序 /*** sqlite不支持中文排序,改用java排序* 根据指定的对象属性字段,排序对象集合,顺序* @param list* @param field* @return*/public static List sortListByField(List<?> list,String field){List temp = new ArrayList(

PNG透明背景按钮的实现(MFC)

问题描述: 当前要在对话框上添加一个以两个PNG图片作为背景的按钮,PNG图的背景是透明的,按钮也要做出相同的透明效果。并且鼠标不在按钮上时,按钮显示"bg1.png";鼠标移动到按钮上时,按钮显示"bg2.png" 开发环境为VS2010。 解决办法: 使用GDI+库装载PNG图片,并使用MFC Button Control和CMFCButton类结合,调用CMFCButton

彻底解决win10系统Tomcat10控制台输出中文乱码

彻底解决Tomcat10控制台输出中文乱码 首先乱码问题的原因通俗的讲就是读的编码格式和写的解码格式不一致,比如最常见的两种中文编码UTF-8和GBK,UTF-8一个汉字占三个字节,GBK一个汉字占两个字节,所以当编码与解码格式不一致时,输出端当然无法识别这是啥,所以只能以乱码代替。 值得一提的是GBK不是国家标准编码,常用的国标有两,一个是GB2312,一个是GB18030 GB1

matplotlib中文乱码问题

在使用Matplotlib进行数据可视化的过程中,经常会遇到中文乱码的问题。显示乱码是由于编码问题导致的,而matplotlib 默认使用ASCII 编码,但是当使用pyplot时,是支持unicode编码的,只是默认字体是英文字体,导致中文无法正常显示,所以显示中文乱码。 文本使用系统默认字体、手动指定字体、使用字体管理器来解决。 一、系统默认字体(全局设置字体) 在Matplotlib中

Java实现Smartcn中文分词

新建一个Maven项目,修改pom.xml文件内容:注意版本的不同; <!-- https://mvnrepository.com/artifact/org.apache.lucene/lucene-analyzers-smartcn --><dependency><groupId>org.apache.lucene</groupId><artifactId>lucene-analyzers

龙芯+FreeRTOS+LVGL实战笔记(新)——05部署主按钮

本专栏是笔者另一个专栏《龙芯+RT-Thread+LVGL实战笔记》的姊妹篇,主要的区别在于实时操作系统的不同,章节的安排和任务的推进保持一致,并对源码做了改进和优化,各位可以先到本人主页下去浏览另一专栏的博客列表(目前已撰写36篇,图1所示),再决定是否订阅。此外,也可以前往本人在B站的视频合集(图2所示)观看所有演示视频,合集首个视频链接为: 借助RT-Thread和LVGL