사용자가 입력 상자를 여러 개 입력 할 수있는 입력 탭을 사용하는 프로그램이있어서 입력 상자가 채워지면 실행되고 다른 프로그램에서 입력 된 데이터가 실행됩니다 . 내 프로그램에 여러 개의 인스턴스를 실행할 수 있도록 탭을 동적으로 복제하는 더하기 기호가있는 탭 단추가 있어야합니다. 각 탭에서 동일한 이름을 사용하고 싶지만 끝에 변형이 있어야합니다. "EntryBox0", "EntryBox1", "EntryBox2".QTabWidget에서 탭을 복제하기위한 버튼
모든 탭에서 서식 (위젯 위치)을 동일하게 유지하면서 손쉬운 방법이 있습니까?
내 첫 번째 생각은 여러 탭을 수동으로 코딩하고 각 탭에 숨기기/숨김 해제 단추가 있지만 훨씬 많은 코드가됩니다.
나는 + 다음에 "탭이"기호를 추가하고 싶습니다. 모든 탭이 동일합니다. 위젯은 동일한 이름을 가지지 만 마지막에 탭이 사용되는 탭을 식별하는 동적 번호가 있습니다.
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_())
, 내 다른 질문은, 이미 QtDesigner 사용하여 레이아웃과 scrollareas 내 탭을 만들었습니다 :
아래는 것을 구현하는 간단한 데모 스크립트입니다 직접 탭 클래스로 가져올 수있는 방법이 있습니까? 즉, 나는 각 라벨/라인 에디트를 가지고 싶지 않다. – dre
@dre. Qt Designer의 탭 위젯 안의 페이지에 모든 위젯을 추가했다고 가정합니다. 그렇다면 모든 위젯을 새로운 탭 페이지 위젯으로 이동하고 별도로 저장해야합니다. 이를 수행하는 쉬운 방법은 Object Inspector에서 탭을 선택한 다음 Shift 키를 누른 상태에서 해당 탭 아래의 마지막 하위 위젯을 클릭하는 것입니다. 그런 다음 위젯을 그룹으로 끌어서 새 양식에 놓고 여기에 레이아웃을 설정할 수 있습니다. 이전 탭은 모두 탭 위젯에서 제거해야합니다. 그런 다음 pyuic을 사용하여 메인 GUI 클래스처럼 가져올 수있는 탭 페이지 클래스 용 모듈을 생성 할 수 있습니다. – ekhumoro
제공 한 코드로 내 게시물을 업데이트했습니다. 귀하의 의견을 따르려고합니다. 모든 탭을 QtDesigner의 새로운 폼에 복사하고 UI로 저장하고 모듈 생성을 위해 pyuic을 사용했습니다. 아무것도 얻지 못하고 있습니다. 분명히 잘못 입력하고있는 것 같습니다. 아마도 잘못 가져 왔을 것입니다. – dre