У меня есть графический интерфейс PyQt с использованием Python 2.7 и QT 4.7, который открывает диалоговое окно, вызываемое кнопкой. Я могу передать значения между диалогом и основным графическим интерфейсом, как правило, отлично по большей части, пока в диалоговом окне не появится QSpinBox.PyQt SpinBox всегда возвращает 0, если ранее не был установлен setValue
Класс, который определяет диалоговое окно, как так:
class BuyDialog(QDialog):
def __init__(self):
QDialog.__init__(self)
global ci, space, cash, current, price, qtyToBuy
self.ui = Ui_buyDialog() # Set up the user interface from Designer.
self.ui.setupUi(self)
for i in range(0, len(ci)):
item = str(ci[i][0])
price = str(ci[i][1])
self.ui.itemsComboBox.addItem(item)
price = str(self.getPrice())
gPrice = "$" + price
print gPrice
self.ui.priceFieldLabel.setText(gPrice)
self.ui.itemsComboBox.currentIndexChanged['QString'].connect(self.updateItems)
self.ui.availableSpaceFieldLabel.setText(space)
canBuy = str(funcs.youCanAfford(cash, price))
self.ui.canAffordFieldLabel.setText(canBuy)
qtyToBuy = self.ui.buySpinBox.value()
код, который обрабатывает сам диалог
def buyDialog(self):
global current, price, qtyToBuy
dialog = BuyDialog()
result = dialog.exec_()
if result:
dialogResult = (current, price, qtyToBuy)
print dialogResult #debug
return dialogResult
current
происходит из выпадающего списка в диалоге, и price
происходит от поиск списка по current
. Я знаю, что диалог обновляется правильно, поскольку значения, возвращаемые для current
и price
, верны. Тем не менее, qtyToBuy
всегда возвращает 0. Единственный способ, которым я получил его, чтобы вернуть что-то другое, - это вызвать setValue()
на нем, когда он запущен. Всюду, где я смотрел, у меня такое впечатление, что я единственный человек, у которого была эта проблема, потому что я не могу найти ничего другого в этом вопросе. Кто-нибудь знает, в чем проблема?
Пожалуйста, покажите действительную последовательность кода, в которой вы получаете значение 'value()' спина и используя его. – qurban
Пока единственным выходом является 'print dialogResult'. Я отлаживаю вывод из командной строки. Так как я не знаю Python/PyQt, я медленно и уверен, что данные вернутся правильно, прежде чем я буду использовать его в другом месте. – Bendustries
Зачем использовать глобальные переменные вместо метода в BuyDialog wrapping self.ui.buySpinBox.value()? А где именно строка 'qtyToBuy = self.ui.buySpinBox.value()' выполнена? –