小编jgo*_*ers的帖子

Tk/Tkinter:检测应用程序丢失焦点

我正在制作Tkinter应用程序.在应用程序中,我想弹出一个上下文菜单,我使用Tk.Menu.post().

当应用程序失去焦点时,我不知道如何使此菜单消失. 我需要这样做,因为菜单保持在顶部,即使切换到另一个窗口,留下菜单"神器".

<FocusOut>在菜单上放置了一个事件,如果菜单具有焦点并且用户将焦点移动到另一个应用程序,则会触发该事件.这很好用.

如果主应用程序窗口具有焦点,我该怎么办?我可以<FocusOut>在应用程序窗口上放置一个事件,关闭菜单; 然而,当我将焦点放在关闭菜单的菜单上时,最终会被调用.菜单是使用parent作为主应用程序创建的,因此我不确定为什么<FocusOut>主菜单上的菜单获得焦点时甚至会触发.

如何区分主要应用程序窗口失去焦点到不同的应用程序与失去焦点到我的菜单?

我不想使用tk_popup()因为我希望用户继续向主窗口提供输入.(使用菜单是可选的).

感谢@Brad Lanam,我提出了一个解决方案,我已将其包括在内:

from Tkinter import *

class App(Tk):
    def __init__(self, *args, **kwargs):
        Tk.__init__(self, *args, **kwargs)

        self.entry = Entry(self)
        self.entry.grid(padx=30, pady=30)
        self.entry.focus_set()
        self.entry.bind("<Tab>", self.put_menu)
        self.entry.bind("<Down>", self.set_focus_on_menu)

        self.menu = Menu(self, tearoff=False)
        self.menu.add_command(label="test")
        self.menu.bind("<FocusOut>", self.destroy_menu)


        self.bind("<FocusIn>", self.app_got_focus)
        self.bind("<FocusOut>", self.app_lost_focus)
        self.bind("<3>", self.put_menu)


    def app_got_focus(self, event):
        self.config(background="red")

    def app_lost_focus(self, event):
        self.config(background="grey")

        ######## SOLUTION BEGIN #########
        if self.focus_get() != self.menu:
            self.destroy_menu(event)
        ######## SOLUTION END ###########

    def set_focus_on_menu(self, event):
        self.menu.focus_set()

    def menu_got_focus(self, event): …
Run Code Online (Sandbox Code Playgroud)

python tk-toolkit tkinter

5
推荐指数
1
解决办法
3297
查看次数

脚本参数

有没有办法将参数(或命令行参数)传递给 Yosys 脚本?

我在这个问题中看到(我们可以在 Yosys 脚本中有变量吗?)您可以在 TCL 解释器中运行 Yosys 脚本。有什么方法可以传递参数吗?

我这样做的原因是我有一个脚本,我希望能够使用 Verilog 文件的参数化路径调用该脚本。当然,这是一个常见的需求,必须有一些简单的方法来做到这一点,但我没有看到。

yosys

4
推荐指数
1
解决办法
661
查看次数

如何判断LLVM指令是否为左侧

有没有办法判断LLVM Instruction是否具有左侧?也就是说,它是否产生价值?

例如,一条add指令将具有左侧。但是,storebr指令不会。

llvm llvm-ir

2
推荐指数
2
解决办法
1133
查看次数

标签 统计

llvm ×1

llvm-ir ×1

python ×1

tk-toolkit ×1

tkinter ×1

yosys ×1