gpt4 book ai didi

python - 将右侧按钮与右侧表格连接

转载 作者:太空宇宙 更新时间:2023-11-03 18:36:46 28 4
gpt4 key购买 nike

我在表中创建多个选项卡和删除按钮时遇到问题。此按钮应删除当前表中的行。我的问题是,如果我创建多个新选项卡,它只会删除最后创建的表中的行。而且我无法命名表格,因为我不知道需要多少个选项卡。

import sys
from PyQt4 import QtGui, QtCore

class Fenster(QtGui.QMainWindow):

def __init__(self, parent=None):

QtGui.QMainWindow.__init__(self, parent)

self.resize(300, 300)

addButton = QtGui.QPushButton(u"Add Tab")
self.connect(addButton, QtCore.SIGNAL("clicked()"), self.addTab)

layout = QtGui.QVBoxLayout()
layout.addWidget(addButton)

self.tab_widget = QtGui.QTabWidget()
self.tab_widget.updatesEnabled()
widget = QtGui.QWidget()
self.tab_widget.addTab(widget, "Tab 1")
widget.setLayout(layout)

self.setCentralWidget(self.tab_widget)
self.show()


def addTab(self):

contents = QtGui.QWidget()

delButton = QtGui.QPushButton(u"Del Row")
self.connect(delButton, QtCore.SIGNAL("clicked()"), self.delRow)

self.table = QtGui.QTableWidget(5, 2)

layout = QtGui.QVBoxLayout()
layout.addWidget(self.table)
layout.addWidget(delButton)

self.tab_widget.addTab(contents, "New Tab")

contents.setLayout(layout)

def delRow(self):

self.table.setRowCount(0)

if __name__ == '__main__':
app = QtGui.QApplication(sys.argv)
window = Fenster()
window.show()
sys.exit(app.exec_())

最佳答案

问题是 self.table始终指向您创建的最后一个表格小部件。 delRow方法需要知道要从哪个表中删除,因此它需要对该表的引用。我建议使用以下代码。在这里,您的槽采用一个参数,该参数指向您要从中删除的表。

def addTab(self):

contents = QtGui.QWidget()

table = QtGui.QTableWidget(5, 2)
delButton = QtGui.QPushButton(u"Del Row")
delButton.clicked.connect(lambda: self.delRow(table))


layout = QtGui.QVBoxLayout()
layout.addWidget(table)
layout.addWidget(delButton)

self.tab_widget.addTab(contents, "New Tab")

contents.setLayout(layout)

def delRow(self, table):

table.setRowCount(0)

关于此代码的一些事情:

  • 我使用了新样式的信号/槽方法将点击的信号连接到槽(它更Pythonic)

  • 因为信号期望连接到一个不带参数的插槽,所以我已经包装了您的 delRow(table)方法使用 lambda 。如果您还没有遇到过lambda以前,它基本上是编写一行函数的简写。您可以在 Python 文档中阅读相关内容。

关于python - 将右侧按钮与右侧表格连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21428013/

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