青菜小哥 发表于 2017-6-5 13:03:31

求助PYQT5大神

想知道怎么点击主窗口上一个按钮跳转到另一个窗口{:5_107:} {:5_107:} 有没有大神求帮助

~风介~ 发表于 2017-6-5 18:51:33

这个qt应该有例子的,可以用qt试一下。

gopythoner 发表于 2017-6-6 09:37:55

信号和槽
创建一个新的窗口,默认是不显示的,然后点击主窗口之后按钮之后发送信号,显示新建的窗口不就行了

1424851327zq 发表于 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()
    MainView = engine.rootObjects()
在这里我注册了两个窗口一个是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['status']==1):
                loginView.loginIntf()
            else:
                loginView.destroy()
                print(userId)
                print(user['surplus'])
                MainView.userIntf(userId,user['surplus'])
                MainView.show()
      else:
            loginView.loginIntf()
还是建议你用第一种方式吧   
页: [1]
查看完整版本: 求助PYQT5大神