Я рассмотрел несколько решений из других потоков для этих проблем, но все, что я пытался, не сработало. Я пытаюсь открыть все фреймы и просто переключаться между ними, как вы можете сделать в tkinter.Переключение между окнами PyQt4 Python 3.5
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
@PYPL Там вы идете! – Jake