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