Ich habe ein Programm, das eine Eingabe-Registerkarte mit mehreren Eingabefeldern für einen Benutzer ausfüllt, und wenn diese Eingabefelder ausgefüllt sind, trete ich Run und ein anderes Programm wird die eingegebenen Daten ausführen . Ich möchte, dass in meinem Programm eine Tabulatortaste mit einem Pluszeichen vorhanden ist, mit der die Tabs dynamisch dupliziert werden, sodass ich mehrere Instanzen ausführen kann. Ich möchte für jede Registerkarte den gleichen Namen verwenden, aber am Ende eine Variante haben - z. "EntryBox0", "EntryBox1", "EntryBox2".Schaltfläche zum Duplizieren von Registerkarten in einem QTabWidget
Gibt es eine einfache Möglichkeit, dies zu tun, während die Formatierung (Widget-Positionen) auf allen Registerkarten gleich bleibt?
Mein erster Gedanke war, die mehreren Registerkarten manuell zu codieren und eine Schaltfläche zum Ein-/Ausblenden für jede Registerkarte zu haben, aber das wäre viel mehr Code.
würde Ich mag das + -Zeichen hinzuzufügen neben "Tab 2". Alle Registerkarten sind identisch. Die Widgets haben denselben Namen, aber am Ende haben sie eine dynamische Nummer, die angibt, welcher Tab verwendet wird.
from Stage import Ui_Form
from Tabs import Ui_TabPage
class TabPage(QWidget, Ui_TabPage):
def __init__(self, parent=None):
super().__init__(parent)
self.setupUi(self)
class Stage(QMainWindow, Ui_Form):
def __init__(self, parent=None):
super().__init__(parent)
self.setupUi(self)
button = QtWidgets.QToolButton()
button.setToolTip('Add New Tab')
button.clicked.connect(self.addNewTab)
button.setIcon(self.style().standardIcon(
QtWidgets.QStyle.SP_DialogYesButton))
self.tabWidget.setCornerWidget(button, QtCore.Qt.TopRightCorner)
self.addNewTab()
def addNewTab(self):
text = 'Tab %d' % (self.tabWidget.count() + 1)
self.tabWidget.addTab(TabPage(self.tabWidget), text)
if __name__ == '__main__':
app = QtWidgets.QApplication(sys.argv)
window = Stage()
window.setGeometry(600, 100, 300, 200)
window.show()
sys.exit(app.exec_())
Das ist, was ich suche, meine andere Frage ist, ich habe bereits meine Tab mit QtDesigner mit Layouts und scrollareas gemacht, Gibt es eine Möglichkeit, es direkt in die Tab-Klasse zu importieren? Mit anderen Worten, ich möchte nicht für jedes Label/Zeile, das ich habe, etwas hinzufügen müssen. – dre
@dre. Ich gehe davon aus, dass Sie alle Widgets einer Seite innerhalb des Tab-Widgets in Qt Designer hinzugefügt haben. Wenn dies der Fall ist, müssen Sie alle diese Widgets in ein neues Tab-Page-Widget verschieben und separat speichern. Eine einfache Möglichkeit besteht darin, die Registerkarte im Objektinspektor auszuwählen, dann die Umschalttaste gedrückt zu halten und auf das letzte Kind-Widget unter dieser Registerkarte zu klicken. Sie können die Widgets als Gruppe auf ein neues Formular ziehen und dort ablegen und ein Layout darauf setzen. Alle alten Tabs sollten aus dem Tab-Widget entfernt werden. Dann können Sie mit pyuic ein Modul für die Tab-Page-Klasse generieren, das genau wie die Haupt-GUI-Klasse importiert werden kann. – ekhumoro
Ich habe meinen Beitrag mit dem von Ihnen bereitgestellten Code aktualisiert. Ich versuche, dem zu folgen, was Sie sagen. Ich habe alle Registerkarte in ein neues Formular in QtDesigner kopiert und als UI gespeichert und pyuic verwendet, um das Modul zu generieren, ich bekomme nichts, ich mache offensichtlich etwas falsch, wahrscheinlich importieren Sie es falsch. – dre