PyQt5无法在Ubuntu 18.04下删除标志WindowStaysOnTopHint

时间:2018-11-04 13:11:20

标签: python pyqt pyqt5 qt-signals windowstate

我正在尝试创建一个将窗口置于其他按钮之上的按钮。使用来自其他问题的推荐,我将类setWindowFlags(self.windowFlags() | QtCore.Qt.WindowStaysOnTopHint)设置为setWindowFlags(self.windowFlags() & ~QtCore.Qt.WindowStaysOnTopHint)并删除标志。它设置了标志,但是当我更改按钮状态时,它仍然启用了该标志。这是代码示例:

from PyQt5 import QtWidgets, QtCore
import sys

class widget(QtWidgets.QWidget):
    def __init__(self):
        QtWidgets.QWidget.__init__(self)

        self.resize(500, 500)
        box = QtWidgets.QVBoxLayout()
        self.setLayout(box)

        self.btn = QtWidgets.QPushButton("pin")
        box.addWidget(self.btn)
        self.btn.setCheckable(True)
        self.btn.toggled.connect(self.setOnTop)

    def setOnTop(self):
        if self.btn.isChecked():
            self.setWindowFlags(self.windowFlags() | QtCore.Qt.WindowStaysOnTopHint)
            print("checked")
        else:
            self.setWindowFlags(self.windowFlags() & ~QtCore.Qt.WindowStaysOnTopHint)
            print("unchecked")
        self.show()

def main(self):
    app = QtWidgets.QApplication(sys.argv)
    ex = widget()
    ex.show()
    sys.exit(app.exec_())

main()

0 个答案:

没有答案