|
发表于 2017-7-28 19:26:30
|
显示全部楼层
首先要说的是,你构架窗口有两种解决方案,一是就只用一个窗口,里面用两个界面,首先一个界面的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()
复制代码
还是建议你用第一种方式吧 |
|