Добавление элементов (строк) из списка в QListWidget

#python #python-3.x #list #pyqt5 #qlistwidget

Вопрос:

Прежде всего, мой пользовательский интерфейс таков:

введите описание изображения здесь

Ну что ж! Я делаю «Генератор кода». У меня есть пустой QListWidget, в котором я хочу иметь коды. Эти коды будут отображаться с помощью кнопки «Создать». До сих пор я тестировал сценарий, видя коды, которые должны быть напечатаны на терминале. Теперь я хочу увидеть их в QListWidget. Итак, когда я нажму на кнопку, в QListWidget появится новый код. Во-первых, коды идут Codes_list = [] таким образом:

 class Ui_MainWindow_2_1(object):
    def __init__(self):
        self.Codes_list = []

    def Code_maker(self):
        import random
        chars= "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!$%amp;*#/?[]{}-_"
        for x in range(self.HowMany_SpinBox.value()):
            password = ""
            for y in range(0, 10):
                password_char = random.choice(chars)
                password  = password_char
            print(password)
            self.Codes_list.append(password)

    def setupUi(self, MainWindow_2_1):
    # Some code later...
    self.CreateButton.clicked.connect(self.Code_maker)
 

Например, Codes_list у них могут быть следующие коды: ["rdt5uamp;/EQ", "BJnV?zNOXn", "TnRZEMjbd6", "}?TF/hmTDF", "y9D1-Cl-Hk"] . Теперь отсюда коды должны передаваться в QListWidget… Как?

Мой скрипт QListWidget выглядит так:

 class Ui_MainWindow_2_1(object):
    # Some code later...

    def setupUi(self, MainWindow_2_1):
        # Some code later...
        self.Codes_listWidget = QtWidgets.QListWidget(self.background)
        self.Codes_listWidget.setGeometry(QtCore.QRect(20, 120, 231, 161))
        self.Codes_listWidget.setStyleSheet("background-color: none;nborder-radius: 10px;")
        self.Codes_listWidget.setObjectName("Codes_listWidget")
        item = QtWidgets.QListWidgetItem()
        font = QtGui.QFont()
        font.setFamily("Microsoft YaHei UI")
        font.setWeight(50)
        item.setFont(font)
        self.Codes_listWidget.addItems(self.Codes_list)
 

Я хочу, чтобы QListWidget обновлялся точно при нажатии кнопки «Создать».

Пароли на Code_maker останутся там навсегда.

Комментарии:

1. Ваш вопрос не очень ясен. Когда следует обновить QListWidget? И если Code_maker вызывается более одного раза, должен ли список быть очищен от предыдущих элементов?

2. @musicamante Я хочу, чтобы QListWidget обновлялся точно при нажатии кнопки «Создать».

3. @musicamante Нет, пароли останутся там навсегда.

4. Затем просто добавьте self.Codes_listWidget.addItem(password) сразу после self.Codes_list.append(password) этого .

Ответ №1:

Мой вопрос решен в комментариях к моему вопросу! Я добавил self.Codes_listWidget.addItem(password) после self.Codes_list.append(password) . Спасибо @musicamante!!!

Наконец, сценарий:

 class Ui_MainWindow_2_1(object):
    def __init__(self):
        self.Codes_list = []

    def Code_maker(self):
        import random
        chars= "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!$%amp;*#/?[]{}-_"
        for x in range(self.HowMany_SpinBox.value()):
            password = ""
            for y in range(0, 10):
                password_char = random.choice(chars)
                password  = password_char
            print(password)
            self.Codes_list.append(password)
            self.Codes_listWidget.addItem(password)

    def setupUi(self, MainWindow_2_1):
    # Some code later...
    self.CreateButton.clicked.connect(self.Code_maker)
 

Мой, наконец, скрипт QListWidget:

 class Ui_MainWindow_2_1(object):
    # Some code later...

    def setupUi(self, MainWindow_2_1):
        # Some code later...
        self.Codes_listWidget = QtWidgets.QListWidget(self.background)
        self.Codes_listWidget.setGeometry(QtCore.QRect(20, 120, 231, 161))
        self.Codes_listWidget.setStyleSheet("background-color: none;nborder-radius: 10px;")
        self.Codes_listWidget.setObjectName("Codes_listWidget")
        item = QtWidgets.QListWidgetItem()
        font = QtGui.QFont()
        font.setFamily("Microsoft YaHei UI")
        font.setWeight(50)
        item.setFont(font)