【发布时间】:2021-08-22 08:24:49
【问题描述】:
我正在尝试解决这个基本用例:我在wxpython 中有一个主应用程序窗口,并且想要在主窗口失去焦点时触发一个操作(在这种情况下,关闭应用程序)(即当我在外面单击,窗口变为非活动状态。
我试过EVT_KILL_FOCUS,但它似乎不适用于主窗口。
现在我有这个代码:
import wx
def main():
app = wx.App()
window = wx.Frame(None, title="Title", size=(800,600))
window.SetBackgroundColour(wx.NullColour)
window.Centre()
def on_activate_evt(evt):
if not evt.Active:
window.Close()
app.Bind(wx.EVT_ACTIVATE, on_activate_evt)
window.Show(True)
app.MainLoop()
这可行,但会产生一个问题:当我单击窗口的顶部栏时,EVT_ACTIVE 被触发,状态为 evt.Active=False,好像窗口装饰不被视为主窗口的一部分。
有没有办法修复它(或其他方式来实现所需的行为)?
【问题讨论】:
-
将
style=wx.BORDER_NONE添加到Frame中,那么就没有top bar可以点击了。
标签: python-3.x wxpython wxwidgets