我正在开发一个使用UI的项目,并开始使用PyQt5。到目前为止,我看了很多视频,阅读了一些教程,并在项目上取得了进展。由于PyQt是一个C++的Python绑定,对于很多Windows的复杂UI来说,没有太多的文档。(或者我找不到它,也有PyQT5的例子)。我的项目包含很多窗口。我试图从用户那里获取一些参数,由于用户参数,优化算法将起作用。所以这个项目包含了这些窗口
我在设计用户界面时主要使用Qt设计器。但后来改变了它,添加了一些方法来获取用户的参数,并用于连接其他选项卡或其他窗口。在
通过在类(窗口)中定义方法,我可以打开其他窗口,但不能隐藏或关闭已经打开的窗口。如果我试图关闭它们,所有进程都会停止,但我想关闭唯一的窗口。我有这个问题在登录注册窗口,弹出窗口采取额外的参数从用户在第一和第二选项卡视图。我的主要开始与登录窗口。然后在Loginwindow中,如果登录成功,它将转到tabview窗口。我打字很成功主窗口.隐藏()并显示tabview窗口。但是在所有弹出窗口中,我不能关闭接受用户参数的弹出窗口。在
因为代码太长了,我就把感兴趣的部分放在这里。在
class LoginUp(object):
def setupUi(self,LoginUp):
self.Buton1.clicked.connect(self.signup)
self.Buton2.clicked.connect(self.tabview)
def signup(self):
# here it shows but user cant close it by just clicking on OK button
# He must click on x button to close which I dont want.
self.signupshow = QtWidgets.QWidget()
self.ui = LoginSignUp()
self.ui.setupUi(self.signupshow)
self.signupshow.show()
def tabview(self): # Here its works
self.tabviewshow = QtWidgets.QWidget()
self.ui_tabview = TabView()
self.ui_tabview.setupUi(self.tabviewshow)
MainWindow.close()
self.tabviewshow.show()
class TabView(object):
def setupUi(self,Form):
self.button3.clicked.connect(self.addargument)
def addargument(self):
# same problem.. after that it popups window that user can give inputs but cant close the window AddArgument class
self.Add = QtWidgets.QWidget()
self.addargumentshow = AddArgument()
self.addargumentshow.setupUi(self.Add)
self.addargumentshow.show()
if __name__ == '__main__':
import sys
app = QtWidgets.QApplication(sys.argv)
MainWindow = QtWidgets.QWidget()
ui = LoginUp()
ui.setupUi(MainWindow)
MainWindow.show()
sys.exit(app.exec_())
解决这个问题的一种方法是使用另一个类作为要显示的所有窗口的控制器。在
在每个窗口中,当你想切换窗口时,你会发送一个信号,这取决于这个控制器类来决定在接收到信号时如何处理信号并决定显示哪个窗口。任何需要传递的参数都可以通过信号传递。在
Here is a simplified complete working example。在
相关问题 更多 >
编程相关推荐