gpt4 book ai didi

python - 如果将不透明度设置为零,wxpython 的 SetTransparent 不会捕获用户输入

转载 作者:行者123 更新时间:2023-11-28 18:54:08 27 4
gpt4 key购买 nike

我正在尝试制作一个 wxpython 窗口(在它是窗口对象的意义上只是一个窗口).. 填满整个屏幕并且完全不可见。然后我想让用户在“窗口”(即屏幕上的任何位置)内单击并拖动。

当我尝试执行 self.SetTransparent(0) 时,窗口未捕获用户输入。

这是有意为之的行为吗?

这是实现我想要的目标的正确方法吗? 1 的不透明度对于人眼来说显然是无法区分的,但我仍然很好奇为什么我不能让它完全透明。

这是片段:

import wx

class Frame(wx.Frame):
def __init__(self):
style = (wx.STAY_ON_TOP | wx.NO_BORDER)
wx.Frame.__init__(self, None, title="Invisible", style=style)

self.SetTransparent(0) # This doesn't work
#self.SetTransparent(1) # But this works fine

self.Bind(wx.EVT_KEY_UP, self.OnKeyPress)

def OnKeyPress(self, event):
"""quit if user press q or Esc"""
if event.GetKeyCode() == 27 or event.GetKeyCode() == ord('Q'): #27 is Esc
self.Close(force=True)
else:
event.Skip()

app = wx.App()
frm = Frame()
frm.ShowFullScreen(True)
app.MainLoop()

或者有没有办法让窗口完全没有背景而不是完全透明的彩色背景?

最佳答案

您可以覆盖 EVT_ERASE_BACKGROUND 以实现相同的效果。

我还清理了代码的其他方面。

在 XP 和 7 上的行为略有不同,但对于您所描述的应用类型来说可能不是问题。

import wx

class Frame(wx.Frame):
def __init__(self):
super(Frame, self).__init__(None)
self.Bind(wx.EVT_ERASE_BACKGROUND, self.OnEraseBackground)
self.Bind(wx.EVT_LEFT_DOWN, self.OnLeftDown)
self.Bind(wx.EVT_KEY_DOWN, self.OnKeyDown)
def OnEraseBackground(self, event):
pass # do nothing
def OnLeftDown(self, event):
print event.GetPosition()
def OnKeyDown(self, event):
if event.GetKeyCode() == wx.WXK_ESCAPE:
self.Close()
else:
event.Skip()

if __name__ == '__main__':
app = wx.PySimpleApp()
frame = Frame()
frame.ShowFullScreen(True)
app.MainLoop()

关于python - 如果将不透明度设置为零,wxpython 的 SetTransparent 不会捕获用户输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6670483/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com