gpt4 book ai didi

python - 在我的 tablewidget 中添加一个组合框

转载 作者:太空宇宙 更新时间:2023-11-03 15:19:43 25 4
gpt4 key购买 nike

我想在我的 tablewidget 单元格中添加一个组合框。当我单击单元格时,组合框将出现。

它正在出现,但问题是当我一个接一个地单击单元格时,它显示组合框已被删除?

import sys
from PyQt4 import QtGui, QtCore


class mainwin(QtGui.QWidget):
def __init__(self, parent = None):
QtGui.QWidget.__init__(self, parent)
self.resize(500, 700)


self.comb = QtGui.QComboBox()
self.comb.addItem("raton")


self.table =QtGui.QTableWidget(self)
self.table.setColumnCount(3)
self.table.setRowCount(4)

self.table.cellClicked.connect(self.addcomb)

def addcomb(self,row,col):
self.table.setCellWidget(row, col, self.comb)

问题是什么?

最佳答案

一个小部件不能同时放置在两个地方。当您将它放入第二个单元格时,它会因此从第一个单元格消失。但是第一个单元格不知道它并且仍然保留小部件的所有权。当您再次单击第一个单元格并调用 setCellWidget 时,它会删除其先前的对象,如文档中所述。所以你的组合框现在永远丢失了。

一旦您将组合框放入表格中,就无法取得组合框的所有权。所以我认为每次要设置单元格小部件时都需要创建新的组合框。

如果你仍然想在表格中保留一个组合框,你可以在创建新的组合框之前删除以前的组合框:

    self.old_row = -1
self.old_col = -1

def addcomb(self,row,col):
if self.old_row >= 0:
self.table.setCellWidget(self.old_row, self.old_col, None)
self.old_row = row
self.old_col = col
comb = QtGui.QComboBox()
comb.addItem("raton")
self.table.setCellWidget(row, col, comb)

关于python - 在我的 tablewidget 中添加一个组合框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17247826/

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