【问题标题】:Add event for 'windows' button in tkinter?在 tkinter 中为“windows”按钮添加事件?
【发布时间】:2021-09-10 09:53:32
【问题描述】:

我的代码:

from tkinter import*
root = Tk()
root.geometry("500x500")
def moti(event):
    root.destroy()
root.bind("<Window>",moti)
root.mainloop()

我要绑定这个键

那么,如何在windows中绑定这个键呢?谢谢!

【问题讨论】:

  • windows 键是为 Windows 保留的。我不认为你可以绑定到它,无论如何绑定它不是一个好主意。

标签: python tkinter key


【解决方案1】:

从一个实际的例子中,我发现windows键被称为&lt;Win_L&gt;(左键)&lt;Win_R&gt;右键),您可以使用以下代码自行查找:

import tkinter as tk

root = tk.Tk()

def event(e):
    print(e.keysym)

root.bind('<Key>',event)
root.mainloop()

一旦窗口获得焦点并按下它,这将打印键名。

所以 TL;DR:windows 键的键名是 &lt;Win_L&gt;。也供参考阅读keysyms manual page - Tk-built-in-commands

w.bind('<Win_L>',callback)

注意:虽然在 Windows 系统上您可以使用 &lt;Win_L&gt;,但在 ubuntu 系统上则为 &lt;Super_L&gt;。所以一个安全的方法是:

from tkinter import *

root = Tk()

def event(e):
    print(f'You just clicked: {e.keysym}')

try:
    root.bind('<Win_L>',event)
except TclError:
    root.bind('<Super_L>',event)

root.mainloop()

【讨论】:

  • 您可能想提一下,绑定到 windows 键或 alt-tab 或其他应该由操作系统处理的事件并不是一个好主意。
  • @TheLizzard 也许不是,因为这些不会停止由操作系统处理,并且这些仅在应用程序也具有焦点时才起作用。所以我认为这真的只是个人喜好。
  • @Block Anytime,但也要记住,如上所述,这样做可能不是最好的主意。我从来没有遇到过必须使用此绑定的需求。
  • @TheLizzard 是的,不幸的是,我认为它在 ubuntu 上被称为 &lt;Super_L&gt;
  • @Block 我不知道,它是由操作系统管理的,不知道如何阻止 windows 菜单弹出。现在它正在成为不良做法,为什么要阻止弹出窗口菜单。
猜你喜欢
  • 1970-01-01
  • 2014-01-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-28
  • 1970-01-01
  • 1970-01-01
  • 2013-08-15
相关资源
最近更新 更多