首先要说的是,你构架窗口有两种解决方案,一是就只用一个窗口,里面用两个界面,首先一个界面的visible为false,另一个为true。当你按下按钮后,两个界面的visible倒置即可。
方案二.就是你需要两个窗口...首先你需要在Python的入口代码中需要注册两个窗口(注:这里我默认你用的是qtquick而不是qtwidgt,若你用的是后者强力推荐你学qtquick) #加载qml文件
engine.load(QtCore.QUrl('main.qml'))
engine.load(QtCore.QUrl('MyMainWindow.qml'))
loginView = engine.rootObjects()[0]
MainView = engine.rootObjects()[1]
在这里我注册了两个窗口一个是main,一个是MyMainWindow,接下来的问题是怎么处理两个窗口的开闭关系,然而不幸的是对于两个窗口的处理余姚放到py代码中做后台处理.你需要在那两个对应的窗口的qml文件中写入操作窗口的js函数,然后做为函数接口供后台py调用..对于何时自动调用py后台的代码你就需要用信号槽机制来处理了,下面附上一段代码(处理的业务是登陆界面登陆跳转新界面窗口,供参考)#登录
def loginAndBackRes(userId, userPw):
if(len(userId)==6):
user = mySql.query('SELECT * FROM manager WHERE id=%s and password=%s',(userId, userPw))
if(len(user)!=0):
loginView.destroy()#窗口销毁内置函数
MainView.managerIntf()#qml中的自制接口函数供后台调用
MainView.show()#窗口展示内置函数
else:
loginView.loginIntf()#qml中的自制接口函数供后台调用
elif(len(userId)==19):
user = mySql.query('SELECT * FROM user_base NATURAL JOIN user_detail WHERE id=%s and password=%s', (userId, userPw))
if (len(user)!=0):
if(user[0]['status']==1):
loginView.loginIntf()
else:
loginView.destroy()
print(userId)
print(user[0]['surplus'])
MainView.userIntf(userId,user[0]['surplus'])
MainView.show()
else:
loginView.loginIntf()
还是建议你用第一种方式吧 |