私はpython 2.7 + qt4.8を使用しています
ウィンドウ内のウィジェットの数を動的に変更する方法は? すべてのウィジェットを削除し、適切な数の新しいウィジェットを作成する必要があります。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
私は2つのボタンを持っています。gridLayout を使用して QScrollArea にボタンを追加するためのもの。2 つ目は、QScrollArea 内のすべてのウィジェットを削除します。追加作品。新しいボタンがあるのがわかります。しかし、クリーニングボタンを押しても消えず、古いものの上に新しいものが表示され続けます。古いボタンを押すこともできます。これは、ウィンドウを再描画するゴーストだけでなく、それらが機能することを示唆しています。
私は機能しようrepaint()
としupdate()
ますが、効果はありません...
これは簡単な例ですが、彼でさえ機能していません。そして、将来的にボタンを追加する必要はなく、ブロック全体にたくさんの要素を追加する必要はありません。
ウィジェットを動的に追加および削除する方法は?