PyQt lineEdit для значения textEdited, потерянного после вызова функции - PullRequest
0 голосов
/ 08 июня 2018
#^^^^class stuff here for setting UI^^^^


# connecting combobox to slot/function get_baffle_number
   self.baffle_number_combobox.currentIndexChanged.connect(get_baffle_number)

# connecting PushButton action "clicked" to function on_click
   self.pushButton.clicked.connect(on_click)


#connecting lineEdit to slot/function get_baffle_cost
   self.baffle_cost_lineEdit.textEdited.connect(get_baffle_cost)


@pyqtSlot()
def get_baffle_cost(text):
    baffle_cost = text
    return baffle_cost


def get_baffle_number(text):
    #add 1 to the index returned by comboBox to get the number desired by user
    baffle_number = text + 1
    return baffle_number


def calc_baffle_cost():
    test_total = (get_baffle_cost() * get_baffle_number())
    return test_total


@pyqtSlot()
def on_click(self):
    baffle_cost = calc_baffle_cost()
    print(baffle_cost)

После того, как я подключу это lineEdit к функции через pyqtSlot(), оно, кажется, получает значение, но немедленно выводит его, если я пытаюсь использовать baffle_cost из другой функции.Я смотрю его в PyCharm во время отладки, и он держит его так же долго, как кажется lineEdit.Нажатие pushButton правильно, когда оно теряет свое значение.

Я не могу использовать возвращенное значение baffle_cost в любом месте с get_baffle_cost.

Я что-то упустил?Самое большее, что у меня есть, - это попытка просто напечатать calc_baffle_cost() и шестнадцатеричное число.Я предполагаю, что это место в памяти, но не уверен.(плохо знаком с Python)

Извините, если этой информации недостаточно.Я просто пытаюсь взять baffle_cost из lineEdit и умножить это на значение, взятое из comboBox.

1 Ответ

0 голосов
/ 13 июня 2018

Кажется, моя проблема была двоякой или более.

Я неправильно определял область своих функций и не использовал правильные пространства имен.(Извините, если эта терминология неверна. Я новичок в Python и PyQt.)

class Ui_MainWindow(object):
    def setupUi(self, MainWindow):

    # sizing of widgets

    def retranslateUi(self, MainWindow):

    # UI stuff here QlineEdits, etc.
    self.baffle_cost_lineEdit.editingFinished.connect(self.get_baffle_cost)

    def get_baffle_cost(self):
        baffle_cost = self.baffle_cost_lineEdit.text()
        return baffle_cost

Это должно быть в той же области видимости (отступ), что и моя функция retranslateUi() в моем классе Ui_MainWindow каквыше.

Я думаю, если бы я лучше структурировал свой проект, это не было бы проблемой.Я определенно усвоил урок о том, чтобы все это было в одном сценарии(program.py)

Другая проблема, с которой я столкнулся, заключается в том, что функция PyQt text(), вызываемая из QlineEdit, возвращает QString, а не str.Мне просто нужно было привести его к строке.

Я терял значение, потому что функция get_baffle_cost не была должным образом ограничена с baffle_cost_lineEdit

...