我有点新手,对于PySide不是很熟悉。我有一个主窗口对象,一次只显示一个widget。我一直在尝试更改
将父窗口小部件设置为
也许登录方法应该在主窗口类中?如果是这样,我如何将在
QMainWindow
类的中央widget,以便在按下按钮时替换窗口中可见的widget。问题在于按下的按钮位于Widget类中,而不是主窗口类中。class App(QtGui.QMainWindow):
def __init__(self):
super(App, self).__init__()
self.initUI()
def initUI(self):
self.statusBar().showMessage('Listo.') #Status Bar
self.login_screen = LoginScreen()
self.logged_in_screen = LoggedInScreen()
self.setCentralWidget(self.login_screen)
self.setGeometry(300, 300, 450, 600) #Window Size
self.setWindowTitle('PyTransactio - Client') #Window Title
self.setWindowIcon(QtGui.QIcon('icon.png')) #App Icon
self.show()
按下的按钮位于login_screen
实例中。当单击该按钮时调用的方法位于LoginScreen
类中:
def login(self):
""" Send login data to the server in order to log in """
#Process
self.setParent(None)
将父窗口小部件设置为
None
会将小部件(login_screen
)从主窗口中移除。当按下loginButton
(在login_screen
小部件内部)时,我应该怎么做才能获得另一个小部件(例如logged_in_screen
)作为主窗口的中心小部件呢?也许登录方法应该在主窗口类中?如果是这样,我如何将在
login_screen
中按下的按钮与主窗口的方法连接起来?
self.parent().login
。看来我得在面向对象编程方面多加努力。非常感谢! - saxaronaQStackedWidget
而不是那个 hack,后者可能需要一些丑陋的代码才能正常工作。 - Bakuriu