我需要把我的窗户保持在底部。我试过使用WindowStaysOnBottomHint,但当点击Win+D或Show Desktop时,应用程序会最小化。
我研究发现,当使用python SetWindowPos点击Show Desktop时,Rainmeter会对Z索引进行重新排序,但我无法找到python QT的解决方案。
请给我一个解决方案!!
发布于 2020-11-11 04:05:29
我找到了使用python的win32应用程序接口(仅适用于windows)的解决方案。请参阅SetWindowPos、SetWindowLong、win32gui
if sys.platform=='win32':
from ctypes import windll
import win32gui,win32con
win32gui.SetWindowPos(window.winId(),win32con.HWND_BOTTOM, 0,0,0,0, win32con.SWP_NOMOVE | win32con.SWP_NOSIZE | win32con.SWP_NOACTIVATE )
hwnd=win32gui.GetWindow(win32gui.GetWindow(windll.user32.GetTopWindow(0),win32con.GW_HWNDLAST),win32con.GW_CHILD);
win32gui.SetWindowLong(window.winId(),win32con.GWL_HWNDPARENT,hwnd)window是QTWidget窗口
发布于 2020-11-10 23:05:01
一种简单的解决方法是检查hideEvent()并确保事件为spontaneous (这意味着事件来自应用程序外部,如本例中的系统),然后调用showNormal()
class MyWindow(QtWidgets.QWidget):
# ...
def hideEvent(self, event):
if event.spontaneous():
self.showNormal()为了安全起见,您还可以检查changeEvent()并过滤WindowStateChange事件:
def changeEvent(self, event):
if (event.type() == QtCore.QEvent.WindowStateChange and
event.spontaneous() and
self.windowState() == QtCore.Qt.WindowMinimized):
self.showNormal()https://stackoverflow.com/questions/64765617
复制相似问题