![](/img/trans.png)
[英]how to get the row number of an item in the qlistwidget using Pyqt5 in python
[英]How to add a row in a PyQt5 in python using a button
在尝试了几个小时来找到我遗漏的内容后在这里感到困惑,为什么在点击“添加行”按钮后这段代码没有添加行! 如果我在不点击按钮的情况下添加行,它可以正常工作(使用init函数),但使用按钮时,它不会。
import sys
from PyQt5.QtWidgets import *
class TabWidget(QDialog):
def __init__(self):
super().__init__()
self.table=AccountTable()
self.setWindowTitle('Tab Widget Application')
tabwidget = AccountTable()
connectButton = QPushButton('add a row')
connectButton.clicked.connect(self.onConnectButtonClicked)
vbox=QVBoxLayout()
vbox.addWidget(tabwidget)
vbox.addWidget(connectButton)
self.setLayout(vbox)
def onConnectButtonClicked(self):
self.table.add_trade(2)
class AccountTable(QTableWidget):
headerls = [
'Capital $ Value', 'Capital-Trading $ Value', 'First-Trading $ Value', 'Second-Trading $ Value',
'Time Elapsed', 'PNL', 'Capital $ Return', 'withdrawable $ ', 'Closing Date' ]
def __init__(self, parent=None):
QTableWidget.__init__(self, parent)
self.setColumnCount(len(self.headerls))
self.setHorizontalHeaderLabels(self.headerls)
self.setAlternatingRowColors(True)
self.resizeColumnsToContents()
def add_trade(self,h):
for i in range(h):
row = self.rowCount()
self.insertRow(row)
if __name__ == '__main__':
app=QApplication(sys.argv)
tabwidget = TabWidget()
tabwidget.show()
app.exec()
我不确定这就是你要找的。 我更改了一些行,主要是使 tabwidget 成为类属性。 这是完整的代码,我在行尾用# c
表示更改。
import sys
from PyQt5.QtWidgets import *
class TabWidget(QDialog):
def __init__(self):
super().__init__()
self.table=AccountTable()
self.setWindowTitle('Tab Widget Application')
self.tabwidget = AccountTable() # c
connectButton = QPushButton('add a row')
connectButton.clicked.connect(self.onConnectButtonClicked)
vbox=QVBoxLayout()
vbox.addWidget(self.tabwidget) # c
vbox.addWidget(connectButton)
self.setLayout(vbox)
def onConnectButtonClicked(self):
self.currentRowCount = self.tabwidget.rowCount() # c
self.tabwidget.insertRow(self.currentRowCount) # c
class AccountTable(QTableWidget):
headerls = [
'Capital $ Value', 'Capital-Trading $ Value', 'First-Trading $ Value', 'Second-Trading $ Value',
'Time Elapsed', 'PNL', 'Capital $ Return', 'withdrawable $ ', 'Closing Date' ]
def __init__(self, parent=None):
QTableWidget.__init__(self, parent)
self.setColumnCount(len(self.headerls))
self.setHorizontalHeaderLabels(self.headerls)
self.setAlternatingRowColors(True)
self.resizeColumnsToContents()
if __name__ == '__main__':
app = QApplication(sys.argv)
tabwidget = TabWidget()
tabwidget.show()
app.exec()
Python 按钮单击命令有不同的方面,当您通常使用方法名称时,它会得到它,但无法处理或从该代码返回任何内容
connectButton.clicked.connect(self.onConnectButtonClicked)
如果您使用 lambda,它将创建与事件相关的函数,您的方法可以处理和返回任何内容,您还可以传递数据,届时回调将是
connectButton.clicked.connect(lambda: self.onConnectButtonClicked())
有关更多信息,您可以通过此链接访问该网站
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.