我有一个使用Python2.7和Qt4.7的PyQtGUI,可以打开一个由按钮调用的对话框。在大多数情况下,我可以在对话框和主GUI之间传递值,直到它到达对话框中的QSpinBox为止。在
定义对话框的类如下所示:
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()
处理对话框本身的代码是
^{pr2}$current
来自对话框中的组合框,price
来自对{current
和price
返回的值是正确的。但是,qtyToBuy
总是返回0。我让它返回任何不同内容的唯一方法是在它启动时调用setValue()
。无论我在哪里看,我都觉得我是唯一一个有这个问题的人,因为我找不到其他关于这个问题的东西。有人知道问题出在哪里吗?在
正如@Frank指出的那样,由于spinBox的
value()
是在对话框显示之前检索到的,所以用户在spinBox中的输入不会影响qtyToBuy
的值,它将始终为您提供spinBox的默认值(在您的例子中是0)。要从数字调整框中检索用户指定的值,应在对话框关闭后检索该值(即用户按对话框上的“确定”按钮)现在,
print
语句将打印用户在对话框上按Ok时在spinBox中的值。在相关问题 更多 >
编程相关推荐