【发布时间】:2020-04-21 01:12:56
【问题描述】:
我已经编写了一个按钮,当单击 '+' 时,从表中生成的新行应该使用之前的组合框选择进行更新,(giff 更好地说明了目标)。
根据文档,我了解它是使用 setCurrentIndex 方法完成的,我应用了它,但我仍然无法得到任何东西,请任何可以帮助我的专家?谢谢。
import sys
from PyQt5 import QtWidgets
from PyQt5.QtWidgets import QMainWindow, QApplication, QComboBox, QTableWidgetItem
from PyQt5.uic import loadUi
from PyQt5.QtCore import Qt
class subwindowDatosEntrada_Dinamic(QMainWindow):
def __init__(self, parent=None):
super(subwindowDatosEntrada_Dinamic,self).__init__(parent)
loadUi('Gui/subventanaDatosEntrada_Dinamic.ui', self)
self.parent = parent
self.parent.ventanas[0] = 1
self.parent.ventanas[1] = 1
self.iniciar()
# Botones
self.btn_mas.clicked.connect(self.mas)
self.btn_menos.clicked.connect(self.menos)
def iniciar(self):
if len(self.parent.datos_generales[0]) > 0:
for i in range(len(self.parent.datos_generales[0])):
self.mas()
self.table_datosEntrada.cellWidget(i, 1).setCurrentText(self.parent.datos_generales[0][i][1])
self.table_datosEntrada.setItem(i, 2, QTableWidgetItem(str(self.parent.datos_generales[0][i][2])))
self.table_datosEntrada.setItem(i, 3, QTableWidgetItem(str(self.parent.datos_generales[0][i][3])))
self.table_datosEntrada.setItem(i, 4, QTableWidgetItem(str(self.parent.datos_generales[0][i][4])))
def mas(self):
nuevo = self.table_datosEntrada.rowCount() #--> Este método me cuenta filas para luego agregarlas.
self.table_datosEntrada.insertRow(nuevo)
for row in range(self.table_datosEntrada.rowCount() - 1, self.table_datosEntrada.rowCount(), 1):
for rowe in range(self.table_datosEntrada.columnCount()):
c1 = QtWidgets.QComboBox()
c1.addItems(['Columna', 'Viga'])
c1.setEditable(True) # Pasos para centrarComboBox
c1.lineEdit().setReadOnly(True)
c1.lineEdit().setAlignment(Qt.AlignCenter)
for i in range(c1.count()):
c1.setItemData(i, Qt.AlignCenter, Qt.TextAlignmentRole)
self.table_datosEntrada.setCellWidget(nuevo, rowe, c1)
if nuevo != 0:
last_index = self.table_datosEntrada.cellWidget(nuevo - 1, rowe).currentIndex()
c1.setCurrentIndex(last_index)
rowe += 1
item = QTableWidgetItem()
item.setTextAlignment(Qt.AlignCenter)
if nuevo != 0:
value = self.table_datosEntrada.item(nuevo-1, rowe).text()
else:
value = 0
item.setData(Qt.EditRole, value)
self.table_datosEntrada.setItem(nuevo, rowe, item)
对不起,我的英语不是我的母语
【问题讨论】:
-
如果要将新项目设置为默认索引,只需将每个新组合框的
currentIndexChanged连接到存储“新”默认索引的函数,然后始终将该索引与 @987654325 一起使用@ 在新的组合框上。在完全不同的问题上,我知道英语不是您的母语,但请避免在其他语言中使用变量名和 cmets:它们只会使您的示例更难阅读,这意味着我们将更难理解你的代码,然后帮助你。 -
谢谢,我会考虑建议的,但是请您用代码说明您给我的解释,以了解您想告诉我的内容,即从我发送给您的代码中,你会改变什么? @musicamante
标签: python user-interface pyqt5