#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)