私は pyside がまったく初めてで、小さなプログラム (および pyside レイアウト全般) に問題があります。
私が持っているのは、いくつかの QlineEdits、コンボボックス、およびボタンを備えた UI です。Qlinesに入力してボタンを押した後、まったく新しいレイアウトで新しいウィンドウを開くか、できれば開いているウィンドウをクリアして、qlinesからの入力に基づいて新しいレイアウトで埋めたいと思います。おそらくこれは非常に基本的なことですが、動作させることができません。その理由は、GUI が既に設定されて表示されている場合に、GUI を置き換えたり新しいものを追加したりする方法を理解できないためです。
次のようなスクリプトがあるとします。
import sys
import os
from PySide import QtCore, QtGui
class BasicGui(QtGui.QWidget):
def __init__(self):
super(Example, self).__init__()
self.initUI()
def initUI(self):
self.projectNameLbl1 = QtGui.QLabel('Label1')
self.projectNameLbl2 = QtGui.QLabel('Label2')
self.nextBtn = QtGui.QPushButton("Next")
self.projectNameEdit = QtGui.QLineEdit(self)
self.projectNameEdit2 = QtGui.QLineEdit(self)
grid = QtGui.QGridLayout()
grid.setSpacing(10)
grid.addWidget(self.projectNameLbl1, 2, 0)
grid.addWidget(self.projectNameEdit, 2, 1)
grid.addWidget(self.projectNameLbl2, 3, 0)
grid.addWidget(self.projectNameEdit2, 3, 1)
grid.addWidget(self.nextBtn, 4, 1)
self.setLayout(grid)
self.setGeometry(300, 300, 350, 300)
self.setWindowTitle('projectCreator')
self.show()
self.nextBtn.clicked.connect(self.nextPressed)
def nextPressed(self):
self.msgBox = QtGui.QMessageBox()
self.msgBox.setText("When this button is pressed I want to generate a new layout")
self.msgBox.exec_()
def main():
app = QtGui.QApplication(sys.argv)
ex = BasicGui()
sys.exit(app.exec_())
if __name__ == '__main__':
main()
label1 の隣の行に 10 を入力し、もう一方の行に 2 を入力して、[次へ] を押します。すべてをクリアして、それぞれに 10 個の qlines (またはそのようなもの) を持つ 2 つの新しい列を作成したいとします。
漠然としている場合、または単に繰り返している場合は、すみません。私は疲れていていらいらしていて、英語は私の母国語ではありません.
私が得ることができる助け、または正しい方向へのプッシュに深く感謝します.
編集:タブ付きの他のウィジェットタイプなどでこれを実現する方が簡単な場合は問題ありません。私がしたいのは、ユーザーからの入力を受け取った後に新しいウィジェットを生成することだけです。