PyQT spinBox значение по умолчанию?

InjunJoe

Новичок
Пользователь
Ноя 3, 2020
26
0
1
Москва
Вопрос:
Значения по умолчанию не передаються со спинбокса, до момента активации его мышкой с изменением значения т.е. нужно что бы значение спинбокса при загрузке программы сразу передовались в метод и в переменную...?
 

stud_55

Модератор
Команда форума
Модератор
Апр 3, 2020
1 522
672
113
т.е. нужно что бы значение спинбокса при загрузке программы сразу передовались в метод и в переменную...?
Да. Вот пример:
Python:
self.sp = QtWidgets.QSpinBox(value=10)
 

InjunJoe

Новичок
Пользователь
Ноя 3, 2020
26
0
1
Москва
Хорошо а если несколько spinBox с разными value:

сейчас так:
self.ui.spinBox = QtWidgets.QSpinBox()

метод_1
self.shag = self.ui.spinBox_44.value()
метод_2
self.shag_ = self.ui.spinBox_45.value()
 

InjunJoe

Новичок
Пользователь
Ноя 3, 2020
26
0
1
Москва
Хорошо а если несколько spinBox с разными value:

сейчас так:
self.ui.spinBox = QtWidgets.QSpinBox()

метод_1
self.shag = self.ui.spinBox_44.value()
метод_2
self.shag_ = self.ui.spinBox_45.value()
 

InjunJoe

Новичок
Пользователь
Ноя 3, 2020
26
0
1
Москва
нужно... метод_1 - value = 1
нужно ... метод_2 - value = 0
 

stud_55

Модератор
Команда форума
Модератор
Апр 3, 2020
1 522
672
113
Хорошо а если несколько spinBox с разными value:
Код вставляйте с помощью ... -> код -> Python.
Каждому спинбоксу задавайте свое значение по умолчанию.
Python:
self.sp = QtWidgets.QSpinBox(value=10)
self.sp2 = QtWidgets.QSpinBox(value=20)
self.sp3 = QtWidgets.QSpinBox(value=30)
 

InjunJoe

Новичок
Пользователь
Ноя 3, 2020
26
0
1
Москва
Код:
тепрь в __init__:      
#self.ui.spinBox = QtWidgets.QSpinBox() # было для всех спинов
теперь для каждого:
self.ui.spinBox_44 = QtWidgets.QSpinBox(value=2)
self.ui.spinBox_45 = QtWidgets.QSpinBox(value=2)
self.ui.spinBox_44.valueChanged.connect(self.spin_44)
self.ui.spinBox_45.valueChanged.connect(self.spin_45)

def spin_44(self):
self.shag = self.ui.spinBox_44.value()
def spin_45(self):
self.shag = self.ui.spinBox_45.value()

при запуске программы значение спина не меняется и = 1?, если спин не активировать мышкой выдает ошибку?
line 339, in start_16
g = self.shag
AttributeError: 'GUI' object has no attribute 'shag'
 

stud_55

Модератор
Команда форума
Модератор
Апр 3, 2020
1 522
672
113
Полный код покажите.
И напишите что не получается сделать.
По фрагменту кода ничего не понятно, кроме того что переменная self.shag не определена, а в методах используется.
 

InjunJoe

Новичок
Пользователь
Ноя 3, 2020
26
0
1
Москва
т.е. при нажатии на соответствующий пушбаттон значение спина не передается (если его до этого не активировать мышкой не изменив вверх или вниз значение - тогда все ок!) ???

Код:
def __init__(self, parent=None):
self.ui.spinBox_44 = QtWidgets.QSpinBox(value=2)
self.ui.spinBox_45 = QtWidgets.QSpinBox(value=2)
self.ui.spinBox_44.valueChanged.connect(self.spin_44)
self.ui.spinBox_45.valueChanged.connect(self.spin_45)
self.ui.pushButton_16.clicked.connect(self.start_16) # определяем значение спин_44 в переменную self.shag
self.ui.pushButton_19.clicked.connect(self.start_19) # определяем значение спин_45 в переменную self.shag_2

def spin_44(self):
self.shag = self.ui.spinBox_44.value()
def spin_45(self):
self.shag_2 = self.ui.spinBox_45.value()

def start_16(self):
g = self.shag
def start_19(self):
g = self.shag_2
 

stud_55

Модератор
Команда форума
Модератор
Апр 3, 2020
1 522
672
113
т.е. при нажатии на соответствующий пушбаттон значение спина не передается (если его до этого не активировать мышкой не изменив вверх или вниз значение - тогда все ок!) ???
Без полного кода ваш вопрос не понятен.
Вот пример получения значения по умолчанию из спинбокса в лейбл по нажатию на кнопку (активировать мышкой ничего не нужно):
Python:
from PyQt5 import Qt


class Main(Qt.QWidget):
    def __init__(self):
        super().__init__()

        self.spinBox = Qt.QSpinBox(value=10)
        self.spinBox.setRange(0, 50)
        self.spinBox2 = Qt.QSpinBox(value=20)
        self.spinBox2.setRange(0, 50)
        self.spinBox3 = Qt.QSpinBox(value=30)
        self.spinBox3.setRange(0, 50)

        self.button = Qt.QPushButton("Получить значение 1го спинбокса")
        self.button.clicked.connect(self.getValue)

        self.getValueLabel = Qt.QLabel("Значение появится здесь")

        self.Layout = Qt.QVBoxLayout()
        self.Layout.addWidget(self.spinBox)
        self.Layout.addWidget(self.spinBox2)
        self.Layout.addWidget(self.spinBox3)
        self.Layout.addWidget(self.getValueLabel)
        self.Layout.addWidget(self.button)
        self.setLayout(self.Layout)

    def getValue(self):
        # получаем значение первого спинбокса
        self.value = self.spinBox.value()
        # выводим его в лейбл
        self.getValueLabel.setText('Значение : {0}'.format(self.value))


if __name__ == '__main__':
    app = Qt.QApplication([])
    main = Main()
    main.show()
    app.exec_()
 

Форум IT Специалистов