鍍金池/ 問答/Python  網(wǎng)絡安全/ Python + PyQt5:用循環(huán)+列的方法生成的QGroupBox,如何使用

Python + PyQt5:用循環(huán)+列的方法生成的QGroupBox,如何使用它們?

大家好。
我想請教一下,在PyQt里用循環(huán)+列的方法生成的包含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的更改?

初學者的問題。謝謝各位!

(另:我在全網(wǎng)都沒有找到我這樣的問題?是我沒找到還是因為太簡單了?)

回答
編輯回答
毀憶

創(chuàng)建控件的時候可以提前創(chuàng)建個變量,隨后加入進去就行了。

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)
       
            
2017年4月6日 15:12