【发布时间】:2018-02-13 07:53:20
【问题描述】:
我正在使用 PyQt5,我设计了 3 个布局。
- 登录
- 仪表板
- 设置。
Login 和 Dashboard 页面具有单独的类文件。当我尝试登录时,它会登录。之后,我尝试从dashboard 中单击settings 按钮,但没有任何反应。布局不变。
然而,如果我单独运行dashboard 文件,单击settings 按钮会起作用并且布局会发生变化。我很困惑,为什么会这样。这是我的一段代码:
登录:
import sys
from PyQt5 import QtCore, QtGui, QtWidgets
from login import Ui_loginWindow
from dashboard import Ui_dashboardWindow
class loginClass(Ui_loginWindow):
def __init__(self,dialog):
Ui_loginWindow.__init__(self)
self.setupUi(dialog)
self.loginBtn.clicked.connect(self.openDashboard)
def openDashboard(self):
self.dashboardWindow = Ui_dashboardWindow()
self.dashboardWindow.setupUi(loginWindow)
loginWindow.hide() #works
loginWindow.show() #works
if __name__ == '__main__':
app = QtWidgets.QApplication(sys.argv)
loginWindow = QtWidgets.QMainWindow()
var = loginClass(loginWindow)
loginWindow.show()
sys.exit(app.exec_())
仪表板:
import sys
from PyQt5 import QtCore, QtGui, QtWidgets
from dashboard import Ui_dashboardWindow
from settings import Ui_settingsWindow
class dashboardClass(Ui_dashboardWindow):
def __init__(self,dialog):
Ui_dashboardWindow.__init__(self)
self.setupUi(dialog)
self.settingsBtn.clicked.connect(self.openSettings)
def openSettings(self):
self.settingsWindow = Ui_settingsWindow()
self.settingsWindow.setupUi(dashboardWindow)
dashboardWindow.hide() #doesnot work
dashboardWindow.show() #doesnot work
if __name__ == '__main__':
app = QtWidgets.QApplication(sys.argv)
dashboardWindow = QtWidgets.QMainWindow()
var = dashboardClass(dashboardWindow)
dashboardWindow.show()
sys.exit(app.exec_())
我真正想要的
【问题讨论】:
-
查看this answer 了解完整的登录对话框示例。
-
问题是它包含 2 个类的单个文件,而我使用的是 2 个单独的文件和 2 个不同的类。我的问题是:当我运行 login.py 时,页面 login.py(layout 1) 上的按钮 1 起作用,这导致了 dashboard.py 页面(layout 2)。如果我单击按钮 2,则没有任何反应。如何纠正这个问题?
-
只需重新编写代码以使用我建议的解决方案。如果您需要两个模块,请将一个导入另一个。
-
可以导入,但是如何将dashboardClass()导入到不同布局的loginClass()?它说:“NameError:名称'dashboardClass'未定义”。我效法了你的榜样。
标签: python python-3.x pyqt5