Форум сайта python.su
Здравствуйте. В своей программе я создаю ряд чекбоксов и присваиваю им какие - нибудь весовые значения. Если сумма этих весовых значений будет превышать определенное число, мне должна программа выдавать одно сообщение, если нет - другое.
Помогите решить: Когда я выбираю “Пункт 12” (имеет весовое значение 12) мне выдает “Сообщение №2”, а должен “Сообщение №1” подскажите мне, что не правильно в моем коде.
Пример:
import sys from PyQt5 import QtCore, QtGui, QtWidgets from PyQt5.QtWidgets import QApplication, QWidget, QPushButton from PyQt5.QtWidgets import QMainWindow, QLabel, QCheckBox 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) button = QtWidgets.QPushButton("Show", self) button.clicked.connect(self.showItem) self.lab = QtWidgets.QLabel("Выберите Пункт", self) self.vbox.addWidget(button, 3) self.vbox.addWidget(self.lab, 4) self.setWindowTitle("My_first_programm") self.setWindowIcon(QtGui.QIcon('pythonlogo.png')) self.setGeometry(50, 50, 1000, 600) self.setLayout(self.vbox) self.show() def checkboxItem(self): array = ["Пунтк 1", "Пункт 2", "Пункт 3", "Пункт 4", "Пунтк 5", "Пункт 6", "Пункт 7", "Пункт 8", "Пунтк 9", "Пункт 10", "Пункт 11", "Пункт 12"] 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 def showItem(self): values = [1,2,3,4,5,6,7,8,9,10,11,12] sum_of_values = 0 index = 0 while index != 12: if self.check[index].isChecked(): sum_of_values += values[index] index += 1 elif sum_of_values > 7: self.lab.setText('Сообщение №1') break else: index += 1 self.lab.setText('Сообщение №2') def main(): app = QtWidgets.QApplication(sys.argv) gui = Base() sys.exit(app.exec_()) if __name__ == "__main__": main()
Офлайн
ashimano
Человек, который только начинает постигать искусство программирования, в первую очередь должен научиться запускать программу “по шагам”. Иначе не будет вообще никакого понимания, почему программа работает, или почему не работает.
Не запускал, но навскидку,
while index != 12: if self.check[index].isChecked(): sum_of_values += values[index] # index += 1 - зачем вы это в if вставили? index += 1 if sum_of_values > 7: self.lab.setText('Сообщение №1') else: self.lab.setText('Сообщение №2')
Отредактировано g (Дек. 30, 2017 16:37:17)
Офлайн
Так у меня программа просто вылетает при выборе пункта №12
Офлайн
ashimano
Запустил ваше детище. С правками, которые описал выше.
Щелкаю пункт 12 - ничего не вылетает. Выводит “сообщение №1”
Давайте еще раз свой код с правками, которые вы добавили.
Офлайн