3 classes
으로 구성된 코드가 있습니다. widget1
및 widget2
클래스는 QFrame
클래스를 상속하며 사용자가 정보를 입력하기 위해 여러 개의 lineedit
및 combobox
으로 구성됩니다.Python PyQt4에서 기존 MainWidnow의 중앙 위젯을 설정하는 방법은 무엇입니까?
그래서 내가 원하는 것은 : 프로그램이 시작될 때 widget1
을 central widget
으로 설정하여 QMainWindow
클래스를 먼저 가져옵니다.
widget1
에는 버튼이 연결된 Check function
이 있습니다. 확인 단추는 페이지에서 사용자가 입력 한 데이터를 기반으로 조건이 true인지 여부를 확인합니다.
조건에 해당하는 경우. widget2
에 central wiget
이 MainWindow
으로 설정되어 기존 central widget
, widget1
을 대체하려고합니다.
제 질문은 기존 MainWidnow
클래스 인스턴스의 중앙 위젯으로 widget2
을 어떻게 설정합니까? ,
def Check(self):
if (condition):
self.parent().setMyCentral(widget2)
이제 : 다음 widget1
에
class MainWindow(QtGui.QMainWindow):
def __init__(self,parent = None):
QtGui.QMainWindow.__init__(self,parent)
....
self.setMyCentral(widget1)
def setMyCentral(self, widgetClass):
mywidget = widgetClass(self)
self.setCentralWidget(mywidget)
과 : 나는 MainWindow
에 대해 다음 할 것
class widget1(QtGui.QFrame):
def __init__(self,parent = None):
......
......
def Check(self):
if (condition):
#set widget2 as central widget on MainWindow
class widget2(QtGui.QFrame):
def __int__(self,parent = None):
.....
.....
class MainWindow(QtGui.QMainWindow):
def __init__(self,parent = None):
QtGui.QMainWindow.__init__(self,parent)
....
mywidgetone = widget1()
self.setCentralWidget(mywidgetone)
if __name__ == '__main__':
app = QtGui.QApplicaiton(sys.argv)
main = MainWindow()
main.show()
app.exec_()
부모 개체에 액세스 할 때'.parent()'함수를 사용할 수 있다는 것을 전혀 알지 못했습니다. 잘 알고 & 많이 고마워! –