python - 如何切换窗口保持在顶部提示
问题描述
我正在尝试创建一个小部件,如果它保持在顶部,用户应该能够选择它。下面是我想要实现的示例代码。在创建小部件后尝试设置Qt.WindowStaysOnTopHint
不起作用:
from PyQt5.QtWidgets import *
from PyQt5.QtCore import Qt
app = QApplication([])
win = QWidget()
def toggleTop():
win.setWindowFlags(Qt.WindowStaysOnTopHint)
win.show()
button = QPushButton('Top', win)
button.clicked.connect(toggleTop)
win.show()
app.exec_()
但是,如果我在小部件创建期间设置标志,它会完美运行:
from PyQt5.QtWidgets import *
from PyQt5.QtCore import Qt
app = QApplication([])
win = QWidget()
win.setWindowFlags(Qt.WindowStaysOnTopHint)
win.show()
app.exec_()
操作系统是 Ubuntu 18.04。
解决方案
您的toggleTop
函数当前每次都用相同的标志覆盖所有窗口标志。要切换单个窗口标志,您需要根据标志的当前状态显式重置它:
def toggleTop():
# get the current state of the flag
on = bool(win.windowFlags() & Qt.WindowStaysOnTopHint)
# toggle the state of the flag
win.setWindowFlag(Qt.WindowStaysOnTopHint, not on)
win.show()
推荐阅读
- node.js - 将参数传递给 npm ci
- go - 使用 udp 协议将应用程序日志发送到 splunk
- list - 通过循环渲染复选框
- sql - 您如何在 SQL 中找到 50% 的评分低于 3 的产品
- typescript - 具有不同标签的角度 8 中的动态控件
- javascript - Electron js 右键单击,如果已进行选择,则可以执行“复制”和“剪切”,如果光标在输入字段中,则可以执行“粘贴”
- jenkins - Jenkins 搜索错误(重定向到 404)
- ios - Firebase Analytics Xamarin iOS - 调试视图
- python - python中的SQL递归
- php - Laravel Eloquent 创建相关项目不保存