Найти - Пользователи
Полная версия: PyQT создание много формового приложения
Начало » GUI » PyQT создание много формового приложения
1
Musicfuns
Как можно такое реализовать? То есть как можно реализовать приложение не из одной формы, а из нескольких. Желательно с примерами.

Задача стоит в том, чтобы появлялась заранее заданная форма по клику на кнопку.
vrabey
Классы QStackedLayout и QStackedWidget

from PyQt4 import QtGui, QtCore
import sys
class MainWindow(QtGui.QMainWindow):
    def __init__(self):
        QtGui.QMainWindow.__init__(self)
        self.resize(300, 300)
        
        self.addTool()
        self.Centr = QtGui.QWidget()
        self.setCentralWidget(self.Centr)
        
        self.stack = QtGui.QStackedLayout(self.Centr) # Создать экземпляр класса QStackedLayout
        self.stack.addWidget(self.addWindowOne())     # добавить компонент в конец контейнера
        self.stack.addWidget(self.addWindowTwo())
        self.currentStack(0)                          # делает видимым компонент с указанным индексом
    def addTool(self):
        """ создаём панель инструментов"""
        
        self.toolbar = self.addToolBar('windows')
        nameAct = ['window 1', 'window 2']
        for index, name in enumerate(nameAct):
            name = QtGui.QAction(name, self)
            self.connect(name, QtCore.SIGNAL('triggered()'), self.switchWindow(index))
            self.toolbar.addAction(name)
    
    def addWindowOne(self):
        wind = QtGui.QWidget()
        wind.setStyleSheet('background-color: {0};'.format('#A2D9EE'))
        return wind
    def addWindowTwo(self, ):
        wind = QtGui.QWidget()
        wind.setStyleSheet('background-color: {0};'.format('#A2EECE'))
        return wind
    def currentStack(self, current_id):
        self.stack.setCurrentIndex(current_id)
    def switchWindow(self, index):
        def f():
           self.currentStack(index)
        return f
app = QtGui.QApplication(sys.argv)
main = MainWindow()
main.show()
sys.exit(app.exec_())

можно ещё посмотреь QTabWidget
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB