Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » GUI
  • » PyQT создание много формового приложения [RSS Feed]

#1 Июнь 30, 2013 10:16:25

Musicfuns
Зарегистрирован: 2013-06-30
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

PyQT создание много формового приложения

Как можно такое реализовать? То есть как можно реализовать приложение не из одной формы, а из нескольких. Желательно с примерами.

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

Офлайн

#2 Июль 28, 2013 14:54:59

vrabey
От: Киев
Зарегистрирован: 2013-04-17
Сообщения: 209
Репутация: +  23  -
Профиль   Отправить e-mail  

PyQT создание много формового приложения

Классы 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

Офлайн

  • Начало
  • » GUI
  • » PyQT создание много формового приложения[RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version