pyqt。如何添加和删除小部件?
pyqt. how to add and delete widgets?
我使用 python 2.7 + qt4.8
如何动态更改window中的小部件数量?我需要删除所有小部件并创建数量合适的新小部件。 testarovaniya 为一个简单的脚本制作:
import sys
from PyQt4 import QtCore, QtGui, uic
class MainForm(QtGui.QDialog):
def __init__(self):
super(MainForm, self).__init__()
uic.loadUi("testQTwindow.ui", self)
self.connect(self.addBtn, QtCore.SIGNAL("clicked()"), self.addBtnClick)
self.connect(self.delBtn, QtCore.SIGNAL("clicked()"), self.delBtnClick)
def addBtnClick(self):
self.tempBtn = QtGui.QPushButton('button')
self.gridLayout_2.addWidget(self.tempBtn)
def delBtnClick(self):
while True:
item = self.gridLayout_2.takeAt(0)
if not item:
break
self.gridLayout_2.removeWidget(item.widget())
app = QtGui.QApplication(sys.argv)
form = MainForm()
form.show()
sys.exit(app.exec_())
并加载此 UI:https://yadi.sk/d/jBOmSubYhqbjm
我有两个按钮。一种用于使用 gridLayout 向 QScrollArea 添加按钮。第二个删除 QScrollArea 中的所有小部件。添加作品。我可以看到如何有新按钮。但是当你按下清洁按钮时并没有消失,新的继续出现在旧的之上。旧按钮也可以按下,这表明它们可以工作,而不仅仅是清除重绘的幽灵window。
我尝试了 repaint()
和 update()
功能 - 但它没有效果...
这是一个简单的例子,但连他都不行。而且我以后不用加按钮了,整块都是一堆元素。
如何动态添加和删除小部件?
这部分循环应该足够了:
while True:
item = self.gridLayout_2.takeAt(0)
我怀疑您正试图删除已经删除的小部件,因此过早地结束了循环。可能某处写了一条错误消息。
我使用 python 2.7 + qt4.8
如何动态更改window中的小部件数量?我需要删除所有小部件并创建数量合适的新小部件。 testarovaniya 为一个简单的脚本制作:
import sys
from PyQt4 import QtCore, QtGui, uic
class MainForm(QtGui.QDialog):
def __init__(self):
super(MainForm, self).__init__()
uic.loadUi("testQTwindow.ui", self)
self.connect(self.addBtn, QtCore.SIGNAL("clicked()"), self.addBtnClick)
self.connect(self.delBtn, QtCore.SIGNAL("clicked()"), self.delBtnClick)
def addBtnClick(self):
self.tempBtn = QtGui.QPushButton('button')
self.gridLayout_2.addWidget(self.tempBtn)
def delBtnClick(self):
while True:
item = self.gridLayout_2.takeAt(0)
if not item:
break
self.gridLayout_2.removeWidget(item.widget())
app = QtGui.QApplication(sys.argv)
form = MainForm()
form.show()
sys.exit(app.exec_())
并加载此 UI:https://yadi.sk/d/jBOmSubYhqbjm
我有两个按钮。一种用于使用 gridLayout 向 QScrollArea 添加按钮。第二个删除 QScrollArea 中的所有小部件。添加作品。我可以看到如何有新按钮。但是当你按下清洁按钮时并没有消失,新的继续出现在旧的之上。旧按钮也可以按下,这表明它们可以工作,而不仅仅是清除重绘的幽灵window。
我尝试了 repaint()
和 update()
功能 - 但它没有效果...
这是一个简单的例子,但连他都不行。而且我以后不用加按钮了,整块都是一堆元素。
如何动态添加和删除小部件?
这部分循环应该足够了:
while True:
item = self.gridLayout_2.takeAt(0)
我怀疑您正试图删除已经删除的小部件,因此过早地结束了循环。可能某处写了一条错误消息。