我有一个以可编辑模式的QTableWidget,用户将其放入整数输入中,我如何生成该表中输入的数据列表以便对其执行操作,这是我的手动代码: def dataframe_generation_from_table(self,table): number_of_rows = table.rowCount() number_of_columns = table.columnCount() tmp_df = pd.DataFrame({ 'Date' : [] , str(self.final_lvl_of_analysis) :[], 'Value': []}) for i in range(0,number_of_rows): for j in range(0,number_of_columns): tmp_item = table.item(i,j) tmp_df2 = pd.Da
以下是关于 qtablewidget 的编程技术问答
我有一个由qtdesigner生成的qtableWidget,我想在其中, 冻结特定行(行0,1,2) 冻结特定列(第0列) 我该如何解决? 编辑:我认为可以在C ++中实现答案,但我无法使其适用于Python. qtwidgets-itemviews-frozencolumn-example.html 我尝试查看堆栈上的某些线程和其他一些平台,但没有一个对Python的答案. Qtdesigner生成的代码: from PyQt5 import QtCore, QtGui, QtWidgets class Ui_MainWindow(object): def setupUi(self, MainWindow): MainWindow.setObjectName("MainWindow") MainWindow.resize(428, 285) self.centralwidget = QtWi
在qtableWidget中,我想可以: 按列和 对表进行排序 通过将行拖动到另一个位置将行顺序更改为 在大量过时或令人困惑的代码段之后,到目前为止,对我来说,最清晰的解决方案是移动一排的最清晰解决方案,我找到了在这里a>. 可以简单地通过setSortingEnabled(True/False)启用/禁用排序. 拖动和掉落单独工作,分类单独起作用,但不能在一起工作. 我猜想是在丢下桌子时再次进行排序. 因此,我认为,如果在拖动过程中关闭排序,则应该得到理想的结果,但事实并非如此.显然,我做错了什么. 我确定它一定是一个小细节,但是我在这里缺少什么?看来我需要摆脱列标题中的排序箭头. 代码:(应复制&粘贴&运行): import sys from PyQt5.QtCore import Qt from PyQt5.QtWidgets import QApplication, QWidget, QTableWidget, QVBoxLayout,
我想通过拖动右下角来调整大小QTableWidget,例如以下屏幕截图.这个怎么做?这是我的代码. 代码: from PySide.QtGui import QApplication, QWidget, QTableWidget week = ["mon", "tue", "wed", "thr", "fri", "sat", "sun"] app = QApplication([]) mainWidget = QWidget() tableWidget = QTableWidget(mainWidget) tableWidget.setRowCount(3) tableWidget.setColumnCount(7) tableWidget.setHorizontalHeaderLabels(week) mainWidget.show() 谢谢. 解决方案 做到这一点的一种方法是在表窗口内的布局中使用QSizeGrip: tableWidget->setW
我已经能够从数据库中获取数据并填充到tablewidget中,但是未显示图像列.我尝试了在网上找到的代码,但它仍然没有用.数据库中的图像列具有BLOB数据类型.请协助纠正我的以下代码.或者,您可能需要建议并推荐除tablewidget 以外的其他方法 def getPersData(self): con = MySQLdb.connect(host="localhost", user="root", password="", database="db") with con: cur = con.cursor() query = cur.execute("SELECT * FROM persons") rows = cur.fetchall() for row_number, row_data in enumerate(rows): self.ui.tableWidget.insertRow(
我想制作一个特定的表,如下图所示的使用pyqt Designer所示,我的结果不是很好. 我想在窗口中制作此表,并包含相同的元素和相同的尺寸. 我尝试使用LineDits和Qlabels使用布局,但也无法做到. 谢谢. 解决方案 前提:您的问题没有显示出很多研究工作,从说很明显您仍然有些缺乏经验的情况下.这可能会使这个答案非常复杂,但这是因为您问的是不是简单. 实现它的要求并非不可能,这并不容易. 另外,您不能直接在设计师中进行. 主要问题是QT的项目视图使用Qheaderview,该视图使用 nodifemensional 结构;添加另一个"维度"层使事情变得更加困难. 因此,您需要考虑的第一个方面是,桌窗口小部件需要为水平标头设置一个新的自定义Qheaderview集,因此显然您需要对Qheaderview进行子类别.但是,为了使事情有效,您也需要对qtablewidget进行亚类. 由于标头的"单构态性"(仅使用其数据的单个坐标),因此您需要"弄平
我有python gui,在一个循环中,我从某个dll调用函数,该函数返回乘行行填充tablewidget的值.所有这些都可以正常工作,除了我在仍在填充时无法滚动表(而DLL功能计算内容-7-8秒为止),所以我尝试使用这样的线程: q = Queue.Queue() for i in (0, numberOfRows): threading.Thread(target=self.callFunctionFromDLL, args=(arg1,arg2, q)).start() result = q.get() ... do something with "result" and populate table row.... def callFunctionFromDLL(self, arg1, arg2, q): result = self.dll.functionFromDLL(arg1, arg2) q.put(result) 但
我在两台Ubuntu机器上使用QT,并在它们之间不时复制源代码.这样做时,我发现了一个非常烦人的问题,我无法弄清楚为什么会发生这种情况. 我正在使用表小部件显示一些数据,并希望拉伸水平标头以适合内容长度.为此,我使用以下行: ui->tableWidget->horizontalHeader()->setResizeMode(0, QHeaderView::ResizeToContents); 这很好. 我有一些这些编码. 但是,当我现在将源代码复制到另一台PC上进行处理时,我会收到以下编译错误: 'class qheaderview'没有成员名称'setResizemode' 重命名'setResizemode' 'setSectionSectionResizemode'可以很好地解决该问题,但是如果我现在将源代码复制回第一个PC,它会告诉我: 'class qheaderview'没有成员命名为'SetSectionResizemode' ..
说我有一个QTableWidget,在每一行中都有QComboBox和QSpinBox.考虑我存储它们的值是QMap theMap; 当更改comboBoxe comboBoxe s值或旋转框值时,我想更新theMap.因此,我应该知道组合框的前值是什么,以替换为comboBox的新值并照顾旋转框的值. 我该怎么做? P.S.我决定创建一个插槽,当您单击表时,它将存储该行组合框的当前值.但是,只有在您按行字幕上,这才起作用.在其他地方(单击combobox或spinbox上)itemSelectionChanged() QTableWidget信号不起作用. 因此,总的来说,我的问题是存储所选行组合框的值,而i将获得ComboBox或SpinBox更改,并且会轻松处理theMap. 解决方案 如何创建自己的,派生的Qcombobox类,符合以下方式: cl
如何创建一个具有2列的QTable小部件,在第一列中,有一个Qcombobox,在第二列中,有一个Qspinbox,以便组合框有所有桌子的空间,只有一个很小的位置叶qspinbox(2-3位数字). 解决方案 首先,使用 setCellWidget() setCellWidget() 将QComboBox和QSpinBox设置为要显示在适当单元格的小部件. 第二,使用horizontalHeader()访问QTableWidget* table = new QTableWidget( this ); table->setColumnCount( 2 ); table->setRowCount( 1 ); table->setCellWidget ( 0, 0, new QComboBox( table ) ); table->setCellWidget ( 0, 1, new QSpinBox( table ) ); table->horizontalHeader()->s
我是学生程序员,我正在使用QT来开发一个用于工作的GUI界面,并且我难以弄清楚如何使此导入功能起作用.如果愿意,一些程序员作家会阻止.到目前为止,我有代码: void InjectionLocationsDialogExpanded::importCSVFile() { QString fileName = QFileDialog::getOpenFileName(this, ("Open File"), "/home", ("csv File(*.csv)")); QString data; QFile importedCSV(fileName); QStringList rowOfData; QStringList rowData; int tempint = 0; data.clear(); rowOfData.clear(); rowData.clear(); if (importedCSV.o
如何获取所有复选框的状态并获取检查的行和列? onclick pushtton函数. QTableWidget *t = ui->tableWidget; t->setRowCount(2); t->setColumnCount(2); QStringList tableHeader; tableHeadersetHorizontalHeaderLabels(tableHeader); for (int i = 0; i rowCount(); i++) { for (int j = 0; j columnCount(); j++) { QWidget *pWidget = new QWidget(); QHBoxLayout *pLayout = new QHBoxLayout(pWidg
我正在尝试做'QWidget' object is not callable 我想做的是在每一行上添加一个检查箱,这是我的代码: pWidget = QWidget() pCheckbox = QCheckBox() pLayout = QVBoxLayout() pLayout.addWidget(pCheckbox) pLayout.setAlignment(Qt.AlignCenter) pLayout.setContentsMargins(0, 0 ,0, 0) pWidget.setLayout(pLayout) for char in accounts: for columnNumber in range(numberColumns): chkBoxItem = QTableWidgetItem() chkBoxItem.setFlags(Q
我使用以下代码将复选框放在我的QTableWidget 的第9列中 chkBoxItem = QtGui.QTableWidgetItem() chkBoxItem.setFlags(QtCore.Qt.ItemIsUserCheckable | QtCore.Qt.ItemIsEnabled) chkBoxItem.setCheckState(QtCore.Qt.Unchecked) table.setItem(rowNo,9,chkBoxItem) 其中table是我的QtTableWidget.我需要添加单击复选框的行中.我该如何实现? 善意, 解决方案 一种方法是: 连接 itemClicked itemClicked 处理程序的表 测试 checkedState checkedState 单击处理程序中的项目 如果已选中该项目,请添加其 示例代码: from PyQt4 import QtGui, QtCore c
我尝试修改QtableWidget中的Qheaderview(水平)的文本. 第一个问题:是否可以像qtableWidgetItem一样设置它可编辑? 第二个问题:如果不可能,我该怎么做,我试图像这样重新粉刷它: void EditableHeaderView::paintSection(QPainter *painter, const QRect &rect, int logicalIndex) const { painter->save(); QHeaderView::paintSection(painter, rect, logicalIndex); painter->restore(); painter->setPen(Qt::SolidLine); painter->drawText(rect, Qt::AlignCenter, m_sValues[logicalIndex]); } 但是标题索引在我的文本后面绘制
我正在尝试通过stylesheet自定义QTableWidget,我只限于descibed 在这里. 如何更改表的水平标头中的间距,其标头标签的大小,列之间的空间等等? 解决方案 您应该使用 qabstractitemdelegate 控制QtableWidget中的项目显示中的项目显示./p> 来自 demoltol"> demegates : "与模型视图控制器模式不同,模型/视图设计不包含用于管理与用户交互的完全独立的组件.通常,视图负责向用户呈现模型数据,以及处理用户输入.为了允许获得此输入的一种灵活性,相互作用由代表执行.这些组件提供了输入功能,并且还负责渲染单个项目 在某些视图中.控制代表的标准接口在 qabstractitemdelegate 类中定义. 来自 QtableWidget :: SetItemdelemdelemdelemdelegate() "设置该视图的项目委托及其模型进行委托.如果您想对编辑进行完全控制和 display ,
我有一个带有以下设置的QTableWidget tableWidget->setSelectionBehavior(QAbstractItemView::SelectRows); tableWidget->setSelectionMode(QAbstractItemView::ExtendedSelection); 我正在尝试删除用户选择的行并使用以下代码. However, it results in a crash when all items are selected and deleted.以下方法正确吗?谢谢. tableWidget->setSortingEnabled(false); QList selectedEntries = tableWidget->selectedItems(); foreach(QTableWidgetItem * currentItem, selectedEntries) {