我正在用PySide在python中创建一个小应用程序。我从文本文件中读取行,并在单独的QLineEdit小部件中显示每一行。每个“条目”有2行编辑和2个qpushbutton。对于每一行我都添加了这些小部件。我的问题是,我为qpushbutton设置了一个信号槽,但是当所有的“条目”都生成时,只有最后一个条目qpushbutton连接到该槽。有人能帮帮我吗。在
这是我的密码
class ItemLogger(QtGui.QMainWindow, Ui.Ui_MainWindow):
def __init__(self, parent = None):
super(ItemLogger, self).__init__(parent)
self.setupUi(self)
self.parseBossItem()
self.comboBox.currentIndexChanged.connect(self.parseBossItem)
self.increase.clicked.connect(self.add_subtract)
def add_subtract(self):
initial = 1
print "kajskasdjflsdkjflk"
def addRow(self, item):
self.frame = QtGui.QFrame()
self.layout = QtGui.QHBoxLayout()
self.itemName = QtGui.QLineEdit(item)
self.itemName.setReadOnly(True)
self.itemCount = QtGui.QLineEdit()
self.itemCount.setText("0")
self.itemCount.setMaximumWidth(40)
self.decrease = QtGui.QPushButton("-")
self.increase = QtGui.QPushButton("+")
self.layout.addWidget(self.itemName)
self.layout.addWidget(self.itemCount)
self.layout.addWidget(self.decrease)
self.layout.addWidget(self.increase)
self.frame.setLayout(self.layout)
self.verticalLayout_3.addWidget(self.frame)
def parseBossItem(self):
if self.comboBox.currentText() == "Item_1":
item_list = open("BossItems/Random_Item")
for line in item_list.readlines():
self.addRow(line)
if self.comboBox.currentText() == "Item_2":
item_list = open("BossItems/Random_Item_2")
for line in item_list.readlines():
self.addRow(line)
这是因为您只连接了最后一个条目。在
以下是您实际在做的:
self.decrease
,self.increase
。在self.decrease
,self.increase
的值。在self.increase
,这是最后添加的小部件。在如果在创建小部件之后不需要访问它们,那么应该考虑使用局部变量(例如,不使用
self
)并在addRow
函数内连接信号。在如果需要跟踪小部件引用,则可以将它们添加到数组中:
要使用来自不同发送者的同一个插槽,您需要确定是谁发送了信号。你可以这样做:
^{pr2}$当然,这是假设您将每个QLineEdit放入数组
self.itemCount
。在由于所有按钮的名称相同,我们需要使用另一种方法。在
相关问题 更多 >
编程相关推荐