如何将 "QTableWidget" 中的值打印到另一个 "QTableWidget"?
How can I print values from "QTableWidget" to another "QTableWidget"?
我正在尝试编写一个足球运动员选择程序。该方案由2windows组成。该程序根据他们的标准衡量球员并显示谁是最佳选择。
关于我的问题,我无法打印第一个 window(在主页上)输入的球员姓名,而第二个 window(在结果 window).
同样,结果也是如此,我在控制台中得到了结果输出,但我无法在我的第二个 window (result window) 中打印输出结果会写的。
我在两个 windows 中都使用了 QTableWidget。结果 window 中不会有任何操作,只有结果。如果您有任何其他小部件建议可以展示给他们,我也欢迎他们。
Photo of the interface
当您单击此处的“Hesapla”(计算)按钮时,会在后台进行计算,然后第二个 window 打开。
我想将第一个 window 中的“İsim”(姓名)列打印到第二个 window 中的“Futbolcular”(足球运动员)列,并在第二列中打印我的结果.
那我主要window:
class AnaPencere(QMainWindow,QTableWidget,QTableWidgetItem):
def __init__(self):
super().__init__()
self.ui = Ui_AnaSayfa()
self.ui.setupUi(self)
self.futbolcular = [[],[]]
self.ui.pushButton_futbolcuekle.clicked.connect(self.futbolcuekle)
self.ui.pushButton_futbolcucikar.clicked.connect(self.futbolcucikar)
self.ui.pushButton_hesapla.clicked.connect(self.hesapla)
self.ui.pushButton_hesapla.clicked.connect(self.ac_sonuc_penceresi)
self.topsis_sonuc = SonucPencere()
def futbolcuekle(self):
satirsayimi = self.ui.tableWidget.rowCount()
self.ui.tableWidget.insertRow(satirsayimi)
self.topsis_sonuc.ui_snc.tableWidget_sonuc.insertRow(satirsayimi)
self.futbolcular.append([])
self.ui.statusBar.showMessage(" Futbolcu sayısı artırıldı.",1500)
def futbolcucikar(self):
if self.ui.tableWidget.rowCount() > 2:
self.ui.tableWidget.removeRow(self.ui.tableWidget.rowCount() - 1)
if self.topsis_sonuc.ui_snc.tableWidget_sonuc.rowCount() > 2:
self.topsis_sonuc.ui_snc.tableWidget_sonuc.removeRow(self.topsis_sonuc.ui_snc.tableWidget_sonuc.rowCount() - 1)
if len(self.futbolcular) > 2:
self.futbolcular.pop()
self.ui.statusBar.showMessage(" Futbolcu sayısı azaltıldı.",1500)
else:
QMessageBox.information(self, "Bilgi Mesajı", "Futbolcu sayısı en az 2 olmalıdır.")
def hesapla(self):
weights = np.array([[0.25, 0.55, 0.40, 0.30, 0.20, 0.10, 0.05]])
criterion_type = ['max', 'max', 'max', 'max', 'max', 'max', 'max']
satirlistesi = [i for i in (range(self.ui.tableWidget.rowCount()))]
for i in range(self.ui.tableWidget.rowCount()):
for j in range(1,self.ui.tableWidget.columnCount()):
for k in satirlistesi:
if i == k:
a = self.ui.tableWidget.item(i, j)
veri = int(a.text())
self.futbolcular[i].append(veri)
#print(self.futbolcular)
dataset = np.array(self.futbolcular)
yakinlik_katsayilari = topsis_method(dataset, weights, criterion_type, graph=False)
for i in range(0, yakinlik_katsayilari.shape[0]):
print('futbolcu' + str(i + 1) + ' = ', round(yakinlik_katsayilari[i], 4))
for i in range(self.ui.tableWidget.rowCount()):
topcu = self.ui.tableWidget.item(i, 0)
topcu_isim = (topcu.text())
self.topsis_sonuc.ui_snc.tableWidget_sonuc.setItem(i, 0, topcu)
sonuc_topcu = self.topsis_sonuc.ui_snc.tableWidget_sonuc.item(i, 0)
sonuc_topcu.setText(topcu_isim)
sonuc_topcu_isim = (sonuc_topcu.text())
print(sonuc_topcu_isim)
for i in range(self.ui.tableWidget.rowCount()):
yks = self.topsis_sonuc.ui_snc.tableWidget_sonuc.item(i, 1)
yks.setText(yakinlik_katsayilari)
def ac_sonuc_penceresi(self):
self.topsis_sonuc.show()
这里我使用了最后两个for循环来打印,但是在我的第二个window里面并没有打印出来,它returns None…
它说:
sonuc_topcu.setText(topcu_isim)
AttributeError: 'NoneType' object has no attribute 'setText'
塞拉姆,
其实很基础
首先,通过循环从数据表中获取数据。 self.ui.tableWidget.item(row, column).text()
。
基本上:
for r in range(self.ui.tableWidget.rowCount()):
for c in range(self.ui.tableWidget.columnCount()):
data.loc[r, c] = self.ui.tableWidget.item(r, c).text()
这里我添加到 pandas 数据框,但你可以添加字典、列表或任何你想要的。
第二,
获取数据并放入另一个数据表
for c in range(len(data.columns)):
for r, row in data.iterrows():
self.ui.tableWidget.setItem(c, r, QtWidgets.QTableWidgetItem(str(data.iloc[r, c])))
我正在尝试编写一个足球运动员选择程序。该方案由2windows组成。该程序根据他们的标准衡量球员并显示谁是最佳选择。
关于我的问题,我无法打印第一个 window(在主页上)输入的球员姓名,而第二个 window(在结果 window).
同样,结果也是如此,我在控制台中得到了结果输出,但我无法在我的第二个 window (result window) 中打印输出结果会写的。
我在两个 windows 中都使用了 QTableWidget。结果 window 中不会有任何操作,只有结果。如果您有任何其他小部件建议可以展示给他们,我也欢迎他们。
Photo of the interface
当您单击此处的“Hesapla”(计算)按钮时,会在后台进行计算,然后第二个 window 打开。
我想将第一个 window 中的“İsim”(姓名)列打印到第二个 window 中的“Futbolcular”(足球运动员)列,并在第二列中打印我的结果.
那我主要window:
class AnaPencere(QMainWindow,QTableWidget,QTableWidgetItem):
def __init__(self):
super().__init__()
self.ui = Ui_AnaSayfa()
self.ui.setupUi(self)
self.futbolcular = [[],[]]
self.ui.pushButton_futbolcuekle.clicked.connect(self.futbolcuekle)
self.ui.pushButton_futbolcucikar.clicked.connect(self.futbolcucikar)
self.ui.pushButton_hesapla.clicked.connect(self.hesapla)
self.ui.pushButton_hesapla.clicked.connect(self.ac_sonuc_penceresi)
self.topsis_sonuc = SonucPencere()
def futbolcuekle(self):
satirsayimi = self.ui.tableWidget.rowCount()
self.ui.tableWidget.insertRow(satirsayimi)
self.topsis_sonuc.ui_snc.tableWidget_sonuc.insertRow(satirsayimi)
self.futbolcular.append([])
self.ui.statusBar.showMessage(" Futbolcu sayısı artırıldı.",1500)
def futbolcucikar(self):
if self.ui.tableWidget.rowCount() > 2:
self.ui.tableWidget.removeRow(self.ui.tableWidget.rowCount() - 1)
if self.topsis_sonuc.ui_snc.tableWidget_sonuc.rowCount() > 2:
self.topsis_sonuc.ui_snc.tableWidget_sonuc.removeRow(self.topsis_sonuc.ui_snc.tableWidget_sonuc.rowCount() - 1)
if len(self.futbolcular) > 2:
self.futbolcular.pop()
self.ui.statusBar.showMessage(" Futbolcu sayısı azaltıldı.",1500)
else:
QMessageBox.information(self, "Bilgi Mesajı", "Futbolcu sayısı en az 2 olmalıdır.")
def hesapla(self):
weights = np.array([[0.25, 0.55, 0.40, 0.30, 0.20, 0.10, 0.05]])
criterion_type = ['max', 'max', 'max', 'max', 'max', 'max', 'max']
satirlistesi = [i for i in (range(self.ui.tableWidget.rowCount()))]
for i in range(self.ui.tableWidget.rowCount()):
for j in range(1,self.ui.tableWidget.columnCount()):
for k in satirlistesi:
if i == k:
a = self.ui.tableWidget.item(i, j)
veri = int(a.text())
self.futbolcular[i].append(veri)
#print(self.futbolcular)
dataset = np.array(self.futbolcular)
yakinlik_katsayilari = topsis_method(dataset, weights, criterion_type, graph=False)
for i in range(0, yakinlik_katsayilari.shape[0]):
print('futbolcu' + str(i + 1) + ' = ', round(yakinlik_katsayilari[i], 4))
for i in range(self.ui.tableWidget.rowCount()):
topcu = self.ui.tableWidget.item(i, 0)
topcu_isim = (topcu.text())
self.topsis_sonuc.ui_snc.tableWidget_sonuc.setItem(i, 0, topcu)
sonuc_topcu = self.topsis_sonuc.ui_snc.tableWidget_sonuc.item(i, 0)
sonuc_topcu.setText(topcu_isim)
sonuc_topcu_isim = (sonuc_topcu.text())
print(sonuc_topcu_isim)
for i in range(self.ui.tableWidget.rowCount()):
yks = self.topsis_sonuc.ui_snc.tableWidget_sonuc.item(i, 1)
yks.setText(yakinlik_katsayilari)
def ac_sonuc_penceresi(self):
self.topsis_sonuc.show()
这里我使用了最后两个for循环来打印,但是在我的第二个window里面并没有打印出来,它returns None…
它说:
sonuc_topcu.setText(topcu_isim)
AttributeError: 'NoneType' object has no attribute 'setText'
塞拉姆,
其实很基础
首先,通过循环从数据表中获取数据。 self.ui.tableWidget.item(row, column).text()
。
基本上:
for r in range(self.ui.tableWidget.rowCount()):
for c in range(self.ui.tableWidget.columnCount()):
data.loc[r, c] = self.ui.tableWidget.item(r, c).text()
这里我添加到 pandas 数据框,但你可以添加字典、列表或任何你想要的。 第二, 获取数据并放入另一个数据表
for c in range(len(data.columns)):
for r, row in data.iterrows():
self.ui.tableWidget.setItem(c, r, QtWidgets.QTableWidgetItem(str(data.iloc[r, c])))