gpt4 book ai didi

python - 从数组动态设置 QTableWidget 的内容

转载 作者:行者123 更新时间:2023-12-01 07:22:23 26 4
gpt4 key购买 nike

编辑添加完整的 GUI 代码(以防相关)

我正在尝试从 numpy 数组生成 QTableWidget 的内容。此代码运行,但值没有显示在单元格中,我不明白为什么。有专家可以帮忙吗?我是 Qt/pyqt5 的初学者。

import all the modules etc.

class CenterPanel(QWidget):
def __init__(self, parent):
QWidget.__init__(self)
self.Parent = parent

self.data = QTableWidget() #construct TableWidget
self.data.setColumnCount(2) #set columns and column labels
self.data.setHorizontalHeaderLabels(('P','T'))
self.btn = QPushButton('Plot') #button to populate QTableBox
self.btn.clicked.connect(self.plot)

vbx_Data = QVBoxLayout() #Create vertical box layout to hold table
vbx_Data.setTitle('Data')
vbx_Data.addWidget(self.data) #Add table to box layout
vbx_Data.addWidget(self.btn) #Add button to box layout
self.setLayout(vbx_Data)

def plot(self):
# dataframe with 2 columns and n rows
df = pd.DataFrame((some_Data),('z','T'))
self.data.setRowCount(len(df))

# Enter data onto Table
for n, value in enumerate(df['z']): # loop over items in first column
self.data.setItem(n, 0, QTableWidgetItem(value))
print(n)
print(value)

for n, value in enumerate(df['T']): # loop over items in second column
self.data.setItem(n, 1, QTableWidgetItem(value))
print(n)
print(value)


class MainWindow(QMainWindow):
def __init__(self):
super(MainWindow, self).__init__()

self.setWindowTitle('Plotting')
WinLeft = 150
WinTop = 150
WinWidth = 1100
WinHight = 800
self.setGeometry(WinLeft, WinTop, WinWidth, WinHight)

self.CenterPane = CenterPanel(self)
self.setCentralWidget(self.CenterPane)
self.setStyle(QStyleFactory.create('Cleanlooks'))


if __name__ == "__main__":
MainThred = QApplication([])

MainGui = MainWindow()
MainGui.setFocus()
MainGui.show()

sys.exit(MainThred.exec_())

打印的终端输出显示我正在从数据帧系列中以正确的格式正确获取值。但是为什么QTableWidget还是空白呢?它正确调整行数,但不填充。我不知道我错在哪里,请帮忙!

最佳答案

编辑!已解决 - 需要添加到表中的值是字符串,而不是 float 。希望对遇到同样问题的人有所帮助!

    # Enter data onto Table
for n, value in enumerate(df['z']): # loop over items in first column
self.data.setItem(n, 0, QTableWidgetItem(str(value)))
print(n)
print(value)

for n, value in enumerate(df['T']): # loop over items in second column
self.data.setItem(n, 1, QTableWidgetItem(str(value)))

关于python - 从数组动态设置 QTableWidget 的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57637796/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com