【问题标题】:tkinter case insensitive bindtkinter 不区分大小写的绑定
【发布时间】:2011-09-13 13:17:31
【问题描述】:

我注意到当您在 tkinter (python3.2 winxp) 中绑定键时,绑定对字母字符区分大小写。换句话说,如果大写锁定处于活动状态,则按 Control+o 绑定 <Control-o> 将不起作用。这是否意味着我需要为每个不区分大小写的带有字母字符的组合键编写两个绑定?或者有什么办法可以解决这个问题?

感谢您的帮助:)

【问题讨论】:

    标签: python tkinter bind case-sensitive


    【解决方案1】:

    是的,你必须做两个绑定。

    【讨论】:

      【解决方案2】:

      在你的情况下你必须绑定两次,但是一旦你编写了一个聪明的函数,你就不需要考虑它了。让我们定义一个为我们执行此操作的函数。

      def bind_(widget, all_=False, modifier="", letter="", callback=None, add='',):
          if modifier and letter:
              letter = "-" + letter
          if all_:
              widget.bind_all('<{}{}>'.format(modifier,letter.upper()), callback, add)
              widget.bind_all('<{}{}>'.format(modifier,letter.lower()), callback, add)
          else:
              widget.bind('<{}{}>'.format(modifier,letter.upper()), callback, add)
              widget.bind('<{}{}>'.format(modifier,letter.lower()), callback, add)
      

      然后像这样使用它:

      bind_(text_widget, modifier="Control", letter="s", callback=save)
      bind_(text_widget, modifier="Control-Shift", letter="s", callback=save_as)
      bind_(text_widget, modifier="", letter="r", callback=print_something)
      

      【讨论】:

        猜你喜欢
        • 2016-08-29
        • 2022-01-25
        • 2013-11-02
        • 2012-07-01
        • 2015-06-14
        • 1970-01-01
        • 1970-01-01
        • 2016-06-04
        • 2012-12-01
        相关资源
        最近更新 更多