为了账号安全,请及时绑定邮箱和手机立即绑定

使用组框设置应用程序中按钮的焦点

使用组框设置应用程序中按钮的焦点

BIG阳 2021-06-29 09:10:35
假设我有一个包含多个 QGroupBox 的应用程序,如下所示:import sysfrom PyQt4 import QtGui, QtCoreclass Main(QtGui.QWidget):    # pylint: disable=too-many-statements    def __init__(self, main):        super(Main, self).__init__()        self.grid_layout = QtGui.QGridLayout()        self.line_edit = QtGui.QLineEdit()        self.grid_layout.addWidget(self.create_settings_group(), 0, 0, 2, 1)        self.push_button = QtGui.QPushButton("go", self)        self.grid_layout.addWidget(self.create_controls_group(), 0, 1)        self.setLayout(self.grid_layout)        main.setCentralWidget(self)    def create_settings_group(self):        group_box_settings = QtGui.QGroupBox(self)        group_box_settings.setTitle("group1")        grid = QtGui.QGridLayout()        grid.addWidget(self.line_edit, 0, 0)        group_box_settings.setLayout(grid)        return group_box_settings    def create_controls_group(self):        group_box_settings = QtGui.QGroupBox(self)        group_box_settings.setTitle("group2")        grid = QtGui.QGridLayout()        grid.addWidget(self.push_button, 0, 0, 1, 2)        group_box_settings.setLayout(grid)        return group_box_settingsclass GUI(QtGui.QMainWindow):    def __init__(self):        super(GUI, self).__init__()        self.ui = Main(self)        self.show()app = QtGui.QApplication(sys.argv)ex = GUI()app.exec_()当我打开我的简单应用程序时,我看到光标在行编辑中闪烁。但我只想突出显示另一个组框中的按钮并输入按下连接到它?我怎么做?使用 self.push_button.setFocus() 不会做任何事情。
查看完整描述

2 回答

?
泛舟湖上清波郎朗

TA贡献1818条经验 获得超3个赞

您必须在出现后立即设置焦点,您可以使用 aQTimer::singleShot()或QMetaObject::invokeMethod():


1. QTimer::singleShot()

...

self.push_button = QtGui.QPushButton("go", self)

self.grid_layout.addWidget(self.create_controls_group(), 0, 1)


self.push_button.setDefault(True)

QtCore.QTimer.singleShot(0, self.push_button.setFocus)

2. QMetaObject::invokeMethod()

...

self.push_button = QtGui.QPushButton("go", self)

self.grid_layout.addWidget(self.create_controls_group(), 0, 1)


self.push_button.setDefault(True)

QtCore.QMetaObject.invokeMethod(self.push_button, 

    "setFocus",

    QtCore.Qt.QueuedConnection)


查看完整回答
反对 回复 2021-07-21
?
至尊宝的传说

TA贡献1789条经验 获得超10个赞

您可以尝试设置按钮Default属性:


self.push_button.setDefault(True)

self.push_button.setFocus()


查看完整回答
反对 回复 2021-07-21
  • 2 回答
  • 0 关注
  • 155 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信