我想创建一个表,其值按行变化。但是只有旋转框的最后一个值正在接收信号。
如何识别上下信号?
我调查了谷歌,发现如何通过1和-1来区分信号值,但是这种方法并未出现在官方文档中。
import sys
from PyQt5.QtGui import *
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
class MyApp(QWidget):
def __init__(self):
super().__init__()
self.MyApp()
def MyApp(self):
self.resize(500,300)
self.tableData = [
['no1', 'name1', 'spinbox1', '100'],
['nn2', 'name2', 'spinbox2', '200'],
['no3', 'name3', 'spinbox3', '300'],
['no4', 'name4', 'spinbox4', '400'],
['no5', 'name5', 'spinbox5', '500']
]
self.qStandardItemModel = QStandardItemModel()
for i in range(len(self.tableData)):
for j in range(len(self.tableData[0])):
model = QStandardItem(self.tableData[i][j])
self.qStandardItemModel.setItem(i, j, model)
self.qTable = QTableView()
self.qTable.setSelectionBehavior(QTableView.SelectRows)
self.qTable.setEditTriggers(QTableView.NoEditTriggers)
self.qTable.setModel(self.qStandardItemModel)
for i in range(5):
self.qSpinbox = QSpinBox()
index = self.qTable.model().index(i, 2)
self.qTable.setIndexWidget(index, self.qSpinbox)
self.qSpinbox.valueChanged.connect(self.valueChanged)
vbox = QVBoxLayout(self)
vbox.addWidget(self.qTable)
self.setLayout(vbox)
def valueChanged(self):
print(self.qSpinbox.value())
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = MyApp()
ex.show()
sys.exit(app.exec_())
我想要做的是按下Spinbox向上按钮添加第四个表格值,然后按下按钮。旋转框值以此方式增加或减少1、2、3、4 ..
table
---------------------
1 |~| 3 |4
no1|~|spinbox(up)|100| 100 -> 200 -> 300 -> 400 .........
.
.
no4|~|spinbox(up)|400| 400 -> 800 -> 1200 -> 1600 ............
-----------------
no1|~|spinbox(down)|400| 400 -> 300 -> 200 -> 100 -> 0
.
.
no4|~|spinbox(down)|1600|1600 -> 1200 -> 800 -> 400 -> 0