Найти - Пользователи
Полная версия: listWidget и checkbox'ы PyQt5
Начало » Python для новичков » listWidget и checkbox'ы PyQt5
1
ashimano
Создаю Чекбоксы в виде словаря и присваиваю им значения. Проблема в том, что если делаю их очень много, они не влезают в окно программы, для этого я хочу создать listWidget, чтобы можно было
просматривать их, но уже как 3 день борюсь с этим и ничего не выходит.
 import sys
from PyQt5 import  QtCore, QtGui, QtWidgets
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QMessageBox
from PyQt5.QtWidgets import QMainWindow, QLabel, QCheckBox, QDesktopWidget
from PyQt5.QtWidgets import QListWidget, QListWidgetItem, QVBoxLayout
from PyQt5.QtWidgets import *
from PyQt5.QtCore import QCoreApplication
class Base(QtWidgets.QWidget):
    def __init__(self):
        super(Base, self).__init__()
        self.startUW()
    def startUW(self):
        self.vbox = QtWidgets.QVBoxLayout()
        self.checkboxItem()
        self.vbox.addStretch(1)
        self.lab = QtWidgets.QLabel("Выберите Пункт", self)
        button = QPushButton("Show", self)
        button.clicked.connect(self.showItem)
        button.resize(button.sizeHint())
        button.move(800, 550)
        button2 = QPushButton("Отмена", self)
        button2.clicked.connect(self.showItem)
        button2.resize(button.sizeHint())
        button2.move(880, 550)
        self.vbox.addWidget(self.lab, 3)
        self.setWindowTitle("My_first_programm")
        self.setWindowIcon(QtGui.QIcon('pythonlogo.png'))
        self.setGeometry(50, 50, 1000, 600)
        self.setLayout(self.vbox)
## Вот тут объявляю listWidget
        self.listWidget = QtWidgets.QListWidget(self.vbox) 
        self.listWidget.setObjectName("listWidget")
        self.horizontalLayout.addWidget(self.listWidget)
        self.show()
        
    def checkboxItem(self):
        array = ["Пунтк 1",
                 "Пункт 2",
                 "Пункт 3",
                 "Пункт 4"]
        self.check = []
        index = 0
        
        for item_name in array:
            self.check.append(QtWidgets.QCheckBox(item_name, self))
            self.vbox.addWidget(self.check[index], index)
            index += 1
## А тут делаю так, чтобы он отображал у меня все сгенерированные чекбоксы
            self.listWidget.addItem(array)
## выдает ошибку : 'Base' object has no attribute 'listWidget' Помогите мне довести до ума это дело. 
    def showItem(self):
        values = [1,2,3,4]
        sum_of_values = 0
        index = 0
        while index != 4:
            if self.check[index].isChecked():     
                sum_of_values += values[index]
            index += 1
        if sum_of_values > 7:
            self.lab.setText('Сообщение №1')
        else:
            self.lab.setText('Сообщение №2')
if __name__ == "__main__":
    app = QtWidgets.QApplication(sys.argv)
    MainWindow = QtWidgets.QMainWindow()
    ui = Base()
    ui.setupUi(MainWindow)
    MainWindow.show()
    sys.exit(app.exec_())
PEHDOM
ashimano
ashimano
## выдает ошибку : ‘Base’ object has no attribute ‘listWidget’ Помогите мне довести до ума это дело.
так его действтельно нет, вот ваш же кусок кода
 def startUW(self):
        self.vbox = QtWidgets.QVBoxLayout()
        self.checkboxItem()
    ..... бла-бла-бла, какйто код..
## Вот тут объявляю listWidget
        self.listWidget = QtWidgets.QListWidget(self.vbox)
..... еще код
def checkboxItem(self):
       .......
## А тут делаю так, чтобы он отображал у меня все сгенерированные чекбоксы
            self.listWidget.addItem(array)
## выдает ошибку : 'Base' object has no attribute 'listWidget' Помогите мне довести до ума это дело. 
на момент вызова self.checkboxItem() self.listWidget-а еще не существует, вы его создадите спустя десяток строк кода..
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB