Python: PySide(PyQt)QMessageBox按钮显示中文
习惯了Delphi、c#调用系统MessageBox本地化显示,待用PySide调用时,Qt原生提示对话框,默认以英文显示。
如何本地化呢?
参考些资料,加以摸索,实现所需效果。并可根据此思路,设计自己所需要的MessageBox封装。
QTextCodec.setCodecForTr(QTextCodec.codecForName("UTF-8"))
box = QMessageBox(QMessageBox.Question, self.tr("提示"), self.tr("您确定要退出吗?"), QMessageBox.NoButton, self)
yr_btn = box.addButton(self.tr("是"), QMessageBox.YesRole)
box.addButton(self.tr("否"), QMessageBox.NoRole)
box.exec_()
if box.clickedButton() == yr_btn:
print 'Bye bye...'
return
else:
print '继续...'
效果如下图示:

直接以.exec_()判断,[是]按钮返回0,尚不知如何与QMesageBox.YesRole对应。但若使用QMessageBox.AcceptRole与QMessageBox.RejectRole则可以。
下面代码,摘自PySide自带例子:
MESSAGE = "<p>Message boxes have a caption, a text, and up to three " \
"buttons, each with standard or custom texts.</p>" \
"<p>Click a button to close the message box. Pressing the Esc " \
"button will activate the detected escape button (if any).</p>" msgBox = QMessageBox(QMessageBox.Question,
"QMessageBox.warning()", MESSAGE,
QMessageBox.NoButton, self)
msgBox.addButton("Save &Again", QMessageBox.AcceptRole)
msgBox.addButton("&Continue", QMessageBox.RejectRole)
if msgBox.exec_() == QMessageBox.AcceptRole:
print "Save Again"
else:
print "Continue"
显示如图:

另一种分步方案:
box = QtGui.QMessageBox()
box.setIcon(QtGui.QMessageBox.Question)
box.setWindowTitle('Kaydet!')
box.setText('Kaydetmek İstediğinize Emin Misiniz?')
box.setStandardButtons(QtGui.QMessageBox.Yes | QtGui.QMessageBox.No)
buttonY = box.button(QtGui.QMessageBox.Yes)
buttonY.setText('Evet')
buttonN = box.button(QtGui.QMessageBox.No)
buttonN.setText('Iptal')
box.exec_() if box.clickedButton() == buttonY:
print 'YES pressed'
elif box.clickedButton() == buttonN:
print 'NO pressed'
谁可知之?大抵其官方文档可见些解释吧。一些是点击触发事件,一些仅是样式类似。

参考资料
QMessageBox - PySide v1.0.7 documentation
QDialogButtonBox Class | Qt 4.8
Python: PySide(PyQt)QMessageBox按钮显示中文的更多相关文章
- extjs之messagebox按钮显示中文
在extjs中我们用到了很多的提示框,但是在对话框按钮上面显示的都是英文的ok.yes.no.cancel,这里给出一个方法,能够使得提示框的按钮文本显示问中文. extjs在加载完成之后会调用页面的 ...
- UIWebView弹出键盘按钮显示中文
UIWebView是一个很常用的视图,一般用来加载网页,比如百度: 点击文本框输入框后,会弹出一个带有toolbar的键盘,toolbar中有3个辅助按钮 有了这3个按钮,是方便很多,但默认是英文的, ...
- 让UIWebView弹出键盘上的按钮显示中文
UIWebView是一个很常用的视图,一般用来加载网页,比如百度: 点击文本框输入框后,会弹出一个带有toolbar的键盘,toolbar中有3个辅助按钮 有了这3个按钮,是方便很多,但默认是英文的, ...
- dev XtraMessageBox按钮显示中文
dev的XtraMessageBox控件使用起来很美观,但默认显示确定的是英文,如下图: 通过下面代码可使“OK”显示为中文:首先创建一个继承自Localizer的类: using DevExpres ...
- IOS 调用系统相册或照相机tab按钮显示中文
- 让XtraMessageBox按钮显示中文
需要定义一个继承子Localizer的类,然后重写GetLocalizedString public class MessboxClass : Localizer { public override ...
- python matplotlib plot 数据中的中文无法正常显示的解决办法
转发自:http://blog.csdn.net/laoyaotask/article/details/22117745?utm_source=tuicool python matplotlib pl ...
- uploadify不能正确显示中文的按钮文本的解决办法
uploadify 目前不能正确显示中文的按钮文本. 我发现bug的原因是uploadify错误的使用了 js 的 escape 和 flash 的 unescape配对,而这2个是不兼容的.正确的转 ...
- 关于python无法显示中文的问题:SyntaxError: Non-ASCII character '\xe4' in file test.py on line 3, but no encoding declared。
[已解决]关于python无法显示中文的问题:SyntaxError: Non-ASCII character '\xe4' in file test.py on line 3, but no enc ...
随机推荐
- Django--URL(路由层)
一.django 静态文件配置 在配置文件中settings.py STATIC_URL = '/static/' STATICFILES_DIRS = [ os.path.join(BASE_DIR ...
- SpringBoot配置swagger2(亲测有效,如果没有配置成功,欢迎在下方留言)
一.导包: <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swa ...
- Net操作Excel_NPOI
Npoi 简介 1.整个Excel表格叫做工作表:WorkBook(工作薄),包含的叫页(工作表):Sheet:行:Row:单元格Cell. 2.Npoi 下载地址:http://npoi.codep ...
- 2312--1.3.4 Prime Cryptarithm 牛式
Description 下面是一个乘法竖式,如果用我们给定的那n个数字来取代*,可以使式子成立的话,我们就叫这个式子牛式. * * * x * * ------- * * * * * * ------ ...
- Dev的TextEdit控件IP地址的Mask设置
1. 添加TextEdit控件. 2. 选中TextEdit控件,查看控件属性. 3. 展开Properties属性项,找到Mask属性项. 4. 设置Mask属性项的EditMask属性值为:(25 ...
- 在新安装的Linux系统中,防火墙默认是被禁掉的,一般也没有配置过任何防火墙的策略,所有不存在/etc/sysconfig/iptables文件。
原因:在新安装的Linux系统中,防火墙默认是被禁掉的,一般也没有配置过任何防火墙的策略,所有不存在/etc/sysconfig/iptables文件. 解决办法: .随便写一条iptables命令配 ...
- [ SHELL编程 ] 文件内容大小写替换
shell编程经常会碰到字符串.文件内容大小写的转换,在不同的场景下选择合适的命令可以提高编程效率. 适用场景 需大小写转换的文件内容或字符串 字符串大小写替换 小写替换大写 echo "h ...
- Kubernetes K8s
1 Kubernetes入门及概念介绍 Kubernetes(K8s)是自动化容器操作的开源平台,这些操作包括部署,调度和节点集群间扩展.开源将Docker 看成Kubernetes内部使用的低级别组 ...
- centos 卸载和安装软件
rpm -qa 列出所有已安装软件包 rpm -e packagename 删除软件包 rpm -e --nodeps packagename 强制删除软件和依赖包 rpm -q 包名 查 ...
- MySQL可以通过phpmyadmin连接,但是无法通过SqlYog(Windows)或Sequel Pro(Mac)下进行远程连接
更改数据库密码: update user set password=passworD("sunjingyu0509!") where user='root'; flush priv ...