对话框弹出时如何取消选中按钮? [重复]

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

此问题已经在这里有了答案:

我需要弹出一个对话框,但是每次对话框弹出时,总是会检查某些按钮,无论我在启动前如何设置它的属性,总是会被选中,有人可以告诉我原因吗?

from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from PyQt5.QtGui import *

class Demo(QDialog):
    def __init__(self):
        super().__init__()
        layout = QHBoxLayout()
        layout.setContentsMargins(0, 0, 0, 0)
        self.export_bn = QPushButton('export')
        self.search_bn = QPushButton('search')
        layout.addStretch(1)
        layout.addWidget(self.export_bn)
        layout.addWidget(self.search_bn)

        main_layout = QVBoxLayout()
        main_layout.addLayout(layout)
        main_layout.addWidget(QTextEdit('Test'))
        self.setLayout(main_layout)

        #unchecked this button not working when start a window
        self.export_bn.setChecked(False)


app = QApplication([])
demo = Demo()
demo.show()
app.exec()

[导出按钮被选中,对话框弹出时我不想选中任何按钮。

“样本”

pyqt pyqt5
1个回答
2
投票

这看起来像是自动默认按钮的行为。

documentation属性的autoDefault

在某些GUI样式中,默认按钮会画上一个额外的框,最多3像素或更多。

对于具有QDialog父级的按钮,此属性的默认值为true;否则默认为false。

QDialog会在您调用parent时自动成为按钮的setLayout,因此两个按钮的autoDefault属性都将是True

因此,您可以使用self.export_bn.setChecked(False)代替:

self.export_bn.setAutoDefault(False)
self.search_bn.setAutoDefault(False)
© www.soinside.com 2019 - 2024. All rights reserved.