QTableWidget的PyQt-setText方法得到AttributeError
我使用PYUIC从QT设计器中编译了GUI文件,我试图找出如何使用相同值"n". 设置第一列中的所有单元格 以下是我的代码: class Ui_MainWindow(object): ... def accinit(self): for n in xrange(9): item = self.tableWidget.item(n, 0) item.setText(_translate("MainWindow", "n", None)) 控制台OUPUT: attributeError:'nontype'对象没有属性'setText' 我仅更改了一个单元格(0,0)的代码,它可以很好地工作: def accinit(self): item = self.tableWidget.item(0, 0) item.setText(_translate("MainWind
6 2024-03-18
编程技术问答社区
如何在QTableWidget中把文字对准单元格的中心?
我正在使用基于QT4的PYQT.我的编辑是Pycharm 2017.3,我的Python版本为3.4.我正在网站上删除一些文字.我试图将该文本与qtableWidget的单元中心对齐. item = QTableWidgetItem(scraped_age).setTextAlignment(Qt.AlignHCenter) self.tableWidget.setItem(x, 2,item) 因此,在将项目放入单元格中时,我试图按照 当我删除setTextAlignment方法时,它确实显示了,如下所示 item = QTableWidgetItem(scraped_age) self.tableWidget.setItem(x, 2,item) 解决方案 这条代码线: item = QTableWidgetItem(scraped_age).setTextAlignment(Qt.AlignHCenter) 将无法正常工作,因为它会在将其分配给变量之
22 2024-01-23
编程技术问答社区
PyQt: QTableWidget到.xls文件
所以,我有一个QTableWidget,我想使用XLWT模块将其保存到.xls文件... 这是代码: def savefile(self): filename = unicode(QtGui.QFileDialog.getSaveFileName(self, 'Save File', '', ".xls(*.xls)")) wbk = xlwt.Workbook() self.sheet = wbk.add_sheet("sheet") self.row = 0 self.col = 0 self.add2(self.row, self.col) wbk.save(filename) def add2(self, row, col): for i in range(self.tableWidget.columnCount()):
14 2023-12-20
编程技术问答社区
如何在QTableWidget中打印数据库中的数据?
如何将数据库(SQLITE)从GUI中的表(使用相同格式)中的表格中打印到记事本/Word文档中.这是我的GUI中表示的表格的代码. class Table(QtGui.QDialog): def __init__(self): super(Table, self).__init__() with sqlite3.connect('database.db') as db: cursor=db.cursor() cursor.execute('select* from Receipt Order BY ReceiptID ASC') title = [cn[0] for cn in cursor.description] rows = [cn[0] for cn in cursor.description] cur=curso
14 2023-11-11
编程技术问答社区
线程执行时Python GUI没有响应
我有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) 但
10 2023-11-11
编程技术问答社区
在 QTableWidget 中选择行和列,同时保持高亮显示
我有一个我设置的QTableWidget,使您无法选择单元格,但是可以通过其标题选择行/列.我遇到的问题是,当我选择一行时,它取消了选择的任何列,而对于列/行也相同.我希望能够以扩展选择行为和列以单打选择行为选择行,但独立于彼此.这是我在做的: ui->tableWidget->setSelectionMode(QAbstractItemView::NoSelection); connect(ui->tableWidget->horizontalHeader(),SIGNAL(sectionClicked(int)), this,SLOT(horizontalHeaderClicked(int))); connect(ui->tableWidget->verticalHeader(),SIGNAL(sectionClicked(int)), this,SLOT(verticalHeaderClicked(int))); 然后: void MatrixWidget::hor
18 2023-11-11
编程技术问答社区
QTableWidgetItem返回项目类型(PYQT)
我正在使用qt和python(以及pyqt)编写QGIS插件. 在qtdesigner中,我有一个qtableWidget对象,如果有一种方法可以获取列项目类型. 例如,在下表中: i输入用户可以编辑的一些默认参数.此外,用户可以添加其他值. 我想知道我是否可以获取 force 列数据类型键入(例如float,int,string),并将此信息作为列表(或我可以在Python代码. 我在QT API中没有发现有用的东西. 您知道是否有办法做到这一点? 编辑 感谢@rbaleksandar的答案,我又迈出了一个步骤. 代码的一部分如下: l = [] for i in range(self.tableWidget.columnCount()): itm = self.tableWidget.item(0,i) l.append(itm.type()) 但是,即使表的第一行填充了一些数字,带有qvariant 翻
12 2023-10-30
编程技术问答社区
在 QT/Python 中将字符串作为项添加到 tableWidget 中
我有一个带有字符串的数组,我想在另一行中添加每个字符串和tableWidget的相同列. 我正在使用该函数setItem更改所需的字段,但是我得到了错误QTableWidget.setItem(int, int, QTableWidgetItem): argument 3 has unexpected type 'str'. 我已经搜索了一点,我想我必须使用函数QTableWidgetItem(在这里)将字符串转换为tableWidgetItem,但是,我不知道如何使用该函数以及'type'的含义(整数值). 一个(具体的)示例如何使用该功能将字符串转换为tableWidgetItem将非常有帮助. 到目前为止,我的代码看起来像这样: pc = 2 i = 0 while i
52 2023-10-02
编程技术问答社区
Python引用另一个脚本上的数据库连接
我正在尝试使用MySQL/MariadB上的数据来制作应用程序时,我正处于学习python的深处,而我几乎正处于我可以在项目中取得良好进展的阶段.我可以通过SSH连接到DB,并从Python脚本中检索数据,但是我现在希望将该数据显示在GUI框中.我面临的挑战之一是,我有两个独立的脚本来处理连接,一个是打开的,一个要关闭,我的理论是仅需要数据访问才能进行连接.我已经使用pyqt5来创建各种GUI和Windows,特别是我希望填充QTTableWidget.我当前没有给我任何错误的脚本,但是它也没有在表小部件中显示数据.我的直觉是,它无法正确地引用打开连接脚本的数据库,因此没有数据可以通过,但是我正在努力确定有效的Google搜索所需的术语. 我的openconn.py如下: import MySQLdb from sshtunnel import SSHTunnelForwarder def Open_Conn(): with SSHTunnelForwarder(
22 2023-09-27
编程技术问答社区
如何将我的数据库插入到我的QTableWidget表中?
class Table(QtGui.QDialog): def __init__(self, parent=None): super(Table, self).__init__(parent) layout = QtGui.QGridLayout() self.table = QtGui.QTableWidget() self.table.setRowCount(20) self.table.setColumnCount(3) layout.addWidget(self.table) self.enterDataInTable() self.setLayout(layout) def enterDataInTable(self): for row in range(0,20): for column in range(0,3): self.table.setI
30 2023-09-22
编程技术问答社区
导出 QTABLEWIDGET'data (Columns, rows, everything, ...) 到 SQLITE3
导出QTableWidget用户填充到数据库文件的数据. (DB文件不存在,因此SQLite3将在引用目录中创建它.) 这是我使用的代码: self.CreateDatasetButton.connect(self.createDS) def CreateDS(self): self.proceed = QtWidgets.QMessageBox.question( self, 'Information', 'Have you Verified your Data?', QtWidgets.QMessageBox.Yes|QtWidgets.QMessageBox.No, QtWidgets.QMessageBox.No) if self.proceed == QtWidgets.QMessageBox.Yes: self.showDialog() else:
32 2023-09-21
编程技术问答社区
当QTableWidget中的QComboBox的值被改变时,获取其之前的值。
说我有一个QTableWidget,在每一行中都有QComboBox和QSpinBox.认为我存储它们的值是QMap theMap; 当更改comboBoxe的值或旋转框值时,我想更新theMap.因此,我应该知道组合框的前值是什么,以替换为comboBox的新值并照顾旋转框的值. 我该怎么做? P.S.我决定创建一个插槽,当您单击表时,它将存储该行组合框的当前值.但这仅在您按行字幕上时起作用.在其他地方(单击combobox或spinbox上)itemSelectionChanged() QTableWidget信号不起作用. 因此,总的来说,我的问题是存储所选行组合框的值,i将获得ComboBox或SpinBox更改甚至更改,并且会轻松处理theMap. 解决方案 如何创建自己的,派生的Qcombobox类,类似于: 的行 class MyComboBo
56 2023-09-08
编程技术问答社区
QTableWidget中的QComboBox和QSpinBox有适当的对齐方式
如何创建一个具有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
22 2023-09-08
编程技术问答社区
如何在QTableWidget中结合拖放和排序?
在qtableWidget中,我想可以: 按列和 对表进行排序 通过将行拖动到另一个位置将行顺序更改为 在大量过时或令人困惑的代码段之后,到目前为止,对我来说,最清晰的解决方案是移动一排的解决方案,我找到了 a>. 可以简单地通过setSortingEnabled(True/False)启用/禁用排序. 拖动和掉落单独工作,分类单独起作用,但不能在一起工作. 我猜想是在丢下桌子时再次进行排序. 因此,我认为,如果在拖动过程中关闭排序,则应该得到所需的结果,但事实并非如此.显然,我做错了什么. 我确定它一定是一个小细节,但是我在这里缺少什么?看来我需要摆脱列标题中的排序箭头. 代码:(应复制&粘贴&运行): import sys from PyQt5.QtCore import Qt from PyQt5.QtWidgets import QApplication, QWidget, QTableWidget, QVBoxLayout, QTab
30 2023-09-07
编程技术问答社区
如何在QTableWidget中自定义排序行为
我如何更改列分类行为,以免像这样的字母顺序排序: 1、11.1、2、22.2、3等 它将以数字为单位,如下: 1、2、3、11.1、22.2,等等 我需要仅在特定列上更改分类行为,而不是在整个表上,因为我想保留名称的正常字母顺序. 我也有一个具有文件大小的列.它们在MB和GB中代表,我想对其进行排序,以便将800 MB排在第一位,而1.4 GB将会出现.它还存在字母分类的问题.有可以执行此操作的方法吗? 解决方案 可能是最简单,最灵活的方法是将原始值(用于排序)与格式化值(用于显示).然后,您可以子类并重新进化其少于操作员 ,因此排序时仅比较原始值.该子类可有选择地用于需要特殊排序的任何列. 为了使文件大小正确使用,您需要将原始值作为字节计数存储,以便可以以相同的方式比较所有格式. 这是一个简单的演示,显示了如何实现此目的: import sys from PyQt5 import QtCore, QtWidgets class Nu
24 2023-09-07
编程技术问答社区
如何从键盘上为QTableWidget创建一个SIGNAL?
我有一张桌子,并用左,右,向上,向下按钮在里面移动.现在,当我留在某个单元格中时,我需要创建一个信号,然后按Space按钮.该信号还应带来该单元的坐标.我尝试使用QTableWidget的标准信号,但它不起作用.我该如何解决? 解决方案 创建一个单独的标头文件,即" CustomTable.H",然后在设计人员中可以将现有的QTableWidget推广到此类. class customTable:public QTableWidget { Q_OBJECT public: customTable(QWidget* parent=0):QTableWidget(parent){} protected: void keyPressEvent(QKeyEvent *e) { if(e->key()==Qt::Key_Space) { emit space
20 2023-09-03
编程技术问答社区
编辑表格时关闭PyQt事件循环
我正在使用PYQT开发GUI. GUI有一个Qlistwidget,一个QTableWidget和Mayavi实施的情节.该列表是指绘制的形状(例如,气缸和锥体).当在列表中选择形状时,我希望将形状的属性加载到表中(来自字典变量),并在图中突出显示形状.我有Mayavi绘图正常工作.另外,如果对表进行了编辑,我需要重新绘制形状,以反映新的属性值(例如,如果更改了半径,则为圆柱体). 因此,当选择列表项目 - >使用项目属性(来自字典变量)更新表时,请在图上突出显示项目 上的项目 编辑表 - >更新字典变量并重新绘制项目 问题:当我选择列表项目并将数据加载到表中时,每次更新单元格时,QTableWidget ItemChanged Signal都会发射启动,这会触发使用不完整的数据重新编写形状. 在编程更新表时,是否有典型的方法可以禁用GUI事件循环? (我有Excel VBA的经验,在此上下文设置Application.EnableEvents = FALS会阻止每
22 2023-09-03
编程技术问答社区
如何选择包含按钮的 QTableWidget 单元格
我在pyqt4上有一个有关qtableWidget的问题.假设我有一个qtablewidget,我想在其中连接到单元的事件使用: table.cellClicked.connect(cellClick) 然后, cellClick 函数完成其作业.问题是:某些单元格包含一个按钮,例如So(以0,0为例): button = QtGui.QPushButton() table.setCellWidget(0,0, button) 现在是我的问题.单元格(占用整个单元格空间)中的按钮的存在完全禁用了 cellclicked - 单元未单击,无法检测到动作.但是我确实希望我的按钮填充牢房. 因此,简而言之,我的问题是 - 在其中有一个按钮时,如何选择(单击)QTableWidget单元格? 解决方案 简单的答案似乎是: button.clicked.connect(cellClick) 但是,您如何知道单击的单元格的行/列?因此,下一个迭代可
20 2023-09-03
编程技术问答社区
Qt/C++ QTableWidget。当头像被双击时做一些事情
我的表格中有一个qtableWidget,当用户双键在行或列的标题上时,我想做一些事情.我正在使用以下连接语句: connect(ui->tblResults->horizontalHeader(),SIGNAL(doubleClicked(QModelIndex)),this,SLOT(tableDoubleClicked(QModelIndex))); 其中this是窗口类,uii> tblresults是窗口表单上的qtableWidget.当我尝试将标头键化时,什么也不会发生.我要连接的插槽是: void wndSearch::tableDoubleClicked(QModelIndex tmp){ QMessageBox::information(0,"DERP!","TEST"); } 非常简单,只需测试以查看插槽是否被调用.我从未收到此消息框.我在Connect()调用上没有任何运行时错误. 我在使用错误的信号吗?还有其他问题吗?请让我知道
16 2023-09-03
编程技术问答社区