gpt4 book ai didi

python - PyQt:removeChild/addChild QGroupBox

转载 作者:太空宇宙 更新时间:2023-11-04 11:05:12 27 4
gpt4 key购买 nike

我正在为客户开发一个系统,该系统显示在一组选项卡中,并在中央小部件中显示一个表格,其中包含从数据库中提取的数据。

根据鼠标事件,容器 (groupBox) 必须从 centralwidget 中删除,或者然后为表格添加新的更新数据。

这是一段运行良好的代码,它显示了 GroupBox 中包含数据的表格:

    self.tab_tableview = QtGui.QWidget()
self.tab_tableview.setObjectName("tab_tableview")

self.viewGroupBox = QtGui.QGroupBox(self.tab_tableview)
self.viewGroupBox.setGeometry(QtCore.QRect(10, 0, 751, 501))
self.viewGroupBox.setObjectName("viewGroupBox")

self.vBox = QtGui.QVBoxLayout()
self.vBox.addWidget(self.newGroupBox)
self.vBox.setGeometry(QtCore.QRect(40, 170, 171, 111))
self.vBox.addStretch(1)

self.viewTableWidget = QtGui.QTableView(self.viewGroupBox)
self.viewTableWidget.setGeometry(QtCore.QRect(10, 20, 731, 471))
self.viewTableWidget.setObjectName("viewTableWidget")

updatedTableModel=self.callShowTable()
self.viewTableWidget.setModel(updatedTableModel)

self.viewTableWidget.setColumnWidth(0,30)
self.viewTableWidget.setColumnWidth(1,550)

self.viewTabWidget.addTab(self.tab_tableview, "")

if removeContainer_Bottun_Pressed:
print "remove bottun was pressed"
self.vBox.removeWidget(self.viewGroupBox)

if addContainer_Bottun_Pressed:
print "add bottun was pressed"
self.vBox.addWidget(self.viewGroupBox)

程序检测“removeContainer_Bottun_Pressed”何时为真,并运行 removeWidget(self.newGroupBox)。虽然 removeWidget 运行了,但 groupBox 仍然在同一个地方,而不是根据请求消失和重新出现。

这里缺少什么?

非常感谢所有意见和建议。

最佳答案

我认为没有必要调用 removeWidget。尝试在要删除的任何内容上调用 widget.deleteLater。然后当你想把它加回去时,重新创建它并使用 layout.insertWidget 将它放在适当的位置。这行得通吗?

它在 Windows XP 上为我工作...

import sys

from PyQt4 import QtGui, QtCore

app = QtGui.QApplication(sys.argv)

widget = QtGui.QWidget()
widget_layout = QtGui.QHBoxLayout()
widget.setLayout(widget_layout)

def add_group_box():
group_box = widget.group_box = QtGui.QGroupBox()
group_layout = QtGui.QVBoxLayout()
group_box.setLayout(group_layout)

for i in range(2):
group_layout.addWidget(QtGui.QRadioButton(str(i)))

widget_layout.insertWidget(0, group_box)
add_group_box()

show_button = QtGui.QPushButton("show")
hide_button = QtGui.QPushButton("hide")
def on_show():
if not widget.group_box:
add_group_box()
def on_hide():
if widget.group_box:
widget.group_box.deleteLater()
widget.group_box = None
show_button.connect(show_button, QtCore.SIGNAL("clicked()"), on_show)
hide_button.connect(hide_button, QtCore.SIGNAL("clicked()"), on_hide)
widget_layout.addWidget(show_button)
widget_layout.addWidget(hide_button)

widget.show()

app.exec_()

关于python - PyQt:removeChild/addChild QGroupBox,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1781173/

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