ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

如何在pygtk中将一个键转换为另一个键

2019-07-05 04:57:23  阅读:173  来源: 互联网

标签:python localization gtk pygtk


我试图让我的pygtk应用程序按照openoffice calc的方式运行,关于小数点.这意味着当接收KP_Decimal键(键盘中的点)时,我希望我的条目显示当前语言环境中的小数点(适当地使用点或逗号).

我已经搜索了很长一段时间了,我一直无法找到如何做到这一点.我可以捕获Gtk.Entry中的key_press_event,并检查KP_Decimal,我可以得到小数点的当前区域设置;但如果需要,我不知道如何将点转换为逗号.

我希望这个更改对应用程序是全局的,而不是特定于某些条目,所以如果可以通过更通用的东西(如输入方法)来完成它会更好.我也一直在阅读它们,我也找不到一种方法来使用它们.

解决方法:

你可以这样做的一种方法是通过子类化gtk.Entry,如下所示:

import gtk
import locale

class NumericEntry(gtk.Entry):
    __gsignals__ = {
        'key_press_event': 'override'
    }
    def do_key_press_event(self, event):
        if event.keyval == gtk.gdk.keyval_from_name('KP_Decimal'):
            event.keyval = int(gtk.gdk.unicode_to_keyval(ord(locale.localeconv()['decimal_point'])))
        gtk.Entry.do_key_press_event(self, event)

我还没有完全测试过,所以可能有一两个边缘情况,但它似乎对我来说很好.

使用子类的好处是它可以很容易地替换现有的小部件 – 只要您需要具有此行为的文本条目,只需使用NumericEntry而不是gtk.Entry.

希望这可以帮助!

标签:python,localization,gtk,pygtk
来源: https://codeday.me/bug/20190705/1384196.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有