pyqt5始终位于顶部单选按钮不起作用

问题描述 投票:0回答:1

我用pyqt5 python制作了Always on top单选按钮。

但不起作用,没有错误。有什么问题吗?

单击单选按钮时,将字符串(“ ON”或“ OFF”传递给函数)>

[def radioButtonClicked_always始终以字符串形式在顶部代码上执行

“” ON =始终在最上面执行“ OFF” =始终位于最前面禁用

我添加print("ON")进行测试。它也可以正常工作。

import sys, os
from PyQt5 import QtWidgets, QtGui, QtCore
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from PyQt5.QtGui import *


class Button(QWidget):

    def __init__(self, parent):
        super(Button, self).__init__(parent)
        self.parent = parent
        self.initUI()

    def initUI(self):
        listBox = QVBoxLayout(self)
        self.setLayout(listBox)

        listBox.addStretch(1)

        hbox = QHBoxLayout()
        group_box_2 = QGroupBox("Always on Top")
        hbox.addWidget(group_box_2)
        hbox_in = QHBoxLayout()
        group_box_2.setLayout(hbox_in)

        rb2_1 = QRadioButton("ON")
        rb2_1.clicked.connect((lambda state, x=rb2_1.text(): self.radioButtonClicked_always(x)))
        hbox_in.addWidget(rb2_1)

        rb2_2 = QRadioButton("OFF")
        rb2_2.clicked.connect((lambda state, x=rb2_2.text(): self.radioButtonClicked_always(x)))
        rb2_2.setChecked(True)
        hbox_in.addWidget(rb2_2)
        listBox.addLayout(hbox)

        self.setWindowTitle('Helper')
        self.setGeometry(300, 300, 300, 200)
        # self.show()

    def radioButtonClicked_always(self, s_state):
        if s_state == "ON":
            print("ON")
            self.setWindowFlags(self.windowFlags() | QtCore.Qt.WindowStaysOnTopHint)
        else:
            print("OFF")
            self.setWindowFlags(self.windowFlags() & ~QtCore.Qt.WindowStaysOnTopHint)

    def closeEvent(self, event):
        self.deleteLater()


class MyApp(QMainWindow):

    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):
        self.statusBar().showMessage('Ready')

        bt = Button(self)
        self.setCentralWidget(bt)
        self.setGeometry(300, 300, 300, 200)
        self.show()

    def closeEvent(self, event):
        self.deleteLater()


if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = MyApp()
    sys.exit(app.exec_())

我使用pyqt5 python制作了Always on top单选按钮。但不工作,没有错误。有什么问题?单击单选按钮时,将字符串(“ ON”或“ OFF”)传递给func def radioButtonClicked_always ...

python python-3.x pyqt pyqt5
1个回答
0
投票

您正在为子窗口小部件“按钮”设置窗口标志(顺便说一句,我建议您使用其他名称),而必须为window

© www.soinside.com 2019 - 2024. All rights reserved.