Python + PyQt5:用循环+列的方法生成的QGroupBox,如何使用它们?

大家好。
我想请教一下,在PyQt里用循环+列的方法生成的包含QchckBox的QGroupBox,如何在程序中使用它们。

这是我的代码,和两个问题。

# -*- coding: utf-8 -*-

import sys
from PyQt5.QtCore import Qt
from PyQt5.QtWidgets import (QApplication, QCheckBox, QGridLayout, QGroupBox, QLabel, QPushButton, QRadioButton, QVBoxLayout, QWidget)

list_food = ["Pizza", "Taco", "Burrito"]

class Window(QWidget):
    def __init__(self):
        super(Window, self).__init__()

        self.setWindowTitle("PyQt5 Group Box")
        self.resize(400, 300)

        self.groupBox = QGroupBox("Best Food")

        # Checkbox layout
        self.vbox = QVBoxLayout()

        for i in range(len(list_food)):
            self.cbx = QCheckBox(list_food[i])
            self.vbox.addWidget(self.cbx)
            self.cbx.stateChanged.connect(self.change_food)
        #cbx1.setChecked(True)              #问题一:如何默认选定列中的第一项?
        self.lbl_result = QLabel("food now is/are: " + "")
        self.vbox.addWidget(self.lbl_result)

        self.groupBox.setLayout(self.vbox)

        # vertical box layout
        self.vlayout = QVBoxLayout()
        self.vlayout.addWidget(self.groupBox)
        self.vlayout.addStretch()
        self.setLayout(self.vlayout)

    def change_food(self):
        self.lbl_result.setText("you changed food to: " + "")    #问题二,如何读取选定的CheckBox?

if __name__ == '__main__':
    app = QApplication(sys.argv)
    clock = Window()
    clock.show()
    sys.exit(app.exec_())

总结一下我的问题是:
一,如何使某个CheckBox默认选定?
二,如何在在程序的其它地方,使用CheckBox的更改?

初学者的问题。谢谢各位!

(另:我在全网都没有找到我这样的问题?是我没找到还是因为太简单了?)

阅读 8k
1 个回答

创建控件的时候可以提前创建个变量,随后加入进去就行了。

self.chk_lst = []
for i in range(len(list_food)):
            self.cbx = QCheckBox(list_food[i])
            self.chk_lst.append(self.cbx)
            
self.chk_lst[1].setChecked(True)
       
            
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题