動的なユーザーインターフェイスを使用してウィジェットを表示し、データベースのデータに応じて消滅させる必要があるアプリケーションを作成しています。コードは以下の通りです。ウィジェットを削除できないためUIを更新できません
データ部分は問題なく、UIの更新は行っていません。
私は、QTabWidget内でウィジェットを動的に作成します。このウィジェット(クラス)は3つのウィジェット:2つのlistWidgetsと押しボタンを含みます。 widget.updateまたはwidget.repaintの有無にかかわらずdestroy-methodの削除または呼び出しは成功していません。
私は間違っていますか?
class ImEntityWidget(object):
def __init__(self, widgetParent, entityclass, x, y, width, height):
self.widgetParent = widgetParent
self.entityclass = entityclass
self.x = x
self.y = y
self.height = height
self.width = width
self.focusItem = session.query(Entity).filter(
Entity.parent_vpu_id == VpuFocus.Id).filter(
Entity.Class == self.entityclass).first()
self.listWidgetHigher = QListWidget(self.widgetParent)
self.listWidgetHigher.setGeometry(QtCore.QRect(
self.x, self.y, self.width, 25))
font = QtGui.QFont()
font.setPointSize(8)
self.listWidgetHigher.setFont(font)
self.listWidgetHigher.setObjectName("listWidgetHigher" +
str(self.entityclass.name))
# Entity in focus pushbutton widget
self.listWidget_pb = QtGui.QPushButton(self.widgetParent)
self.listWidget_pb.setGeometry(QtCore.QRect(
self.x, self.y + 25, self.width, 25))
font = QtGui.QFont()
font.setPointSize(7)
font.setWeight(75)
font.setBold(True)
self.listWidget_pb.setFont(font)
self.listWidget_pb.setObjectName("pushButton" + str(self.entityclass.name))
# Lower recursion entity widget
self.listWidget = QListWidget(self.widgetParent)
self.listWidget.setGeometry(QtCore.QRect(
self.x, self.y + 50, self.width, self.height - 50))
font = QtGui.QFont()
font.setPointSize(8)
self.listWidget.setFont(font)
self.listWidget.setObjectName("listWidget" + str(self.entityclass.name))
# set button context menu policy
self.listWidget_pb.setContextMenuPolicy(Qt.CustomContextMenu)
self.listWidget_pb.customContextMenuRequested.connect(
self.listWidget_pbCtxMenu)
self.listWidget_pb.connect(self.listWidget_pb,
SIGNAL("activated(QModelIndex)"), self.focusHigherRecursion)
self.listWidget.itemDoubleClicked.connect(self.doubleClick)
#Using the widget class
self.entWidget = ImEntityWidget(
self.tabPrimaryProcesses, entityclass,
wX, wY, wWidth, wHeight)
self.entityWidgets.append(self.entWidget)
# Trying to delete the widgets
for self.widget in self.entityWidgets:
#del self.widget.listWidgetHigher
#del self.widget.listWidget_pb
#del self.widget.listWidget
#self.tabPrimaryProcesses.update()
self.widget.listWidgetHigher.destroy(destroyWindow=True)
self.widget.listWidget_pb.destroy(destroyWindow=True)
self.widget.listWidget.destroy(destroyWindow=True)
私は昨夜、この問題に遭遇しました。この場合、コンテナウィジェット 'QTabWidget'を正しく理解し、その親を' None'に設定することで解決しました。これは 'QTabWidget'を削除します。それを同じ場所に置き換えて 'QTableWidget'を再作成してください。今度は通常どおりに入力します。私はあなたがしようとしているものの正確なサンプルコードを与えると、より良い答えを与えることができます。 – Jeff