【发布时间】:2017-06-10 14:40:55
【问题描述】:
我已经从其他线程查看了针对这些问题的多种解决方案,但我尝试的所有方法都没有奏效。我正在尝试打开所有框架并在它们之间简单地切换,就像你可以在 tkinter 中做的那样。
Tkinter 代码:
#Location Of All Frames
Container = tk.Frame(self)
Container.pack(side="top", fill="both", expand=True)
Container.grid_rowconfigure(0, weight=1)
Container.grid_columnconfigure(0, weight=1)
self.Container = Container
#Loop To Select Frames
self.Frames = {}
for F in (Login, Admin, User):
PageName = F.__name__
Frame = F(parent=Container, controller=self)
self.Frames[PageName] = Frame
#Allign Frame
Frame.grid(row=0, column=0, sticky="nsew")
#Call Function Show Frame
self.show_frame(Login)
#Function To Call When Switching Frame
def show_frame(self, PageName):
#If Instance Not Created, Create Instance
if PageName not in self.Frames:
self.Frames[PageName] = PageName(self.Container, self)
Frame = self.Frames[PageName]
Frame.tkraise()
我正在尝试为 PyQt4 重新创建它,但到目前为止还没有成功。 我想要完成的是。
从登录页面开始。 登录(QtGui.QWidget) 然后一旦登录,按下按钮。切换到下一个窗口。 该程序将有许多不同的布局需要在它们之间切换。
当前代码:
class Application(QtGui.QMainWindow): #This was a solution from someone else that doesn't seem to work
def __init__(self, parent=None):
super(Application).__init__(parent)
self.central_widget = QtGui.QStackedWidget()
self.setCentralWidget(self.central_widget)
login_widget = LoginWidget(self)
login_widget.button.clicked.connect(self.Login)
self.central_widget.addWidget(login_widget)
def Login(self):
logged_in_widget = Admin(self)
self.central_widget.addWidget(logged_in_widget)
self.central_widget.setCurrentWidget(logged_in_widget)
我也认为这种方法对于大量页面效率低下。
class LoginWidget(QtGui.QWidget):
def __init__(self):
super(Application, self).__init__()
self.initUI() #Call Initialize UI function
def initUI(self):
self.showFullScreen()
(...)
class Admin(QtGui.QWidget):
def __init__(self):
super(Application, self).__init__()
self.initUI() #Call Initialize UI function
def initUI(self):
self.showFullScreen()
(...)
我还没有创建任何其他窗口。
任何帮助将不胜感激。
【问题讨论】:
-
到目前为止,您对 pyqt4 进行了哪些尝试?请发布您的代码
-
@PYPL 你去!
标签: python pyqt pyqt4 python-3.5