Python и PyQt QStakedWidget обзор виджета и его практическое использование

  Рет қаралды 2,614

PyScientist

PyScientist

6 жыл бұрын

Python и PyQt, в этом видео рассказываю, что из себя представляет класс QStakedWidget способы применения объекта QStakedWidget и его взаимодействие с другими объектами интерфейса Qt. В частности в теории и на практических примерах покажу основные методы QStakedWidget, покажу как управлять виджетами с помощью QComboBox и QPushButton. Покажу как настроить графический интерфейс с использованием QtDesigner. В второй части видео будет продолжение, настроим графический интерфейс более тонко.
Подробнее на Портале: PyScientist
pyscientist.ucoz.net
doc.qt.io/archives/qt-4.8/QSta... - ссылка на документацию по классу (родная Qt)
srinikom.github.io/pyside-doc... - ссылка на документацию по классу (PySide)
Если у Вас есть какие либо вопросы по видео, либо по работе программы, любые приложения по сотрудничеству буду рад Вам помочь, пожалуйста обращайтесь на мою почту sergei-dmitriev@mail.ru либо пишите Ваши предложения в комментариях.
Ссылки на предыдущие видео по теме:
Видео 1: Python настройка рабочего пространства, использование PyCharm
• Python и PyCharm(IDE) ...
Видео 2: Python функции
• Python функции tutoria...
Видео 3: Python классы
• Python и классы на при...
Видео 4: Графический интерфейс Qt для Python, или PyQt
• Python и Qt библиотека...
Видео 5: Python компиляция программ, cx_Freeze и другие компиляторы
• Python exe tutorial ко...
Видео 6.1: Библиотека Matplotlib создание графиков для анализа данных
• Python Matplotlib граф...
Видео 6.2: Библиотека matplotlib и Qt встраивание графиков в графический интерфейс Qt
• Python и Matplotlib py...
Видео 7: Matplotlib модуль Animation класс FuncAnimation (автообновление графиков)
• Python и Matplotlib мо...
Видео 8: Библиотека Matplotlib, отображение графиков функции с использованием библиотеки numexpr (ввод функции из текстовой строки)
• Python и Matplotlib py...
Видео 9.1: Классы QListWidget и QListView сопоставительный анализ, простой пример применения QListWidget
• Python и PyQt (QListWi...
Видео 9.2: Класс QListView пример применения с использованием QtCore.QabstractListModel
• Python PyQt и QListV...
Видео 10: Python и Excel взаимодействие с excel (библиотеки xlrd, xlwt, openpyxl, win32com)
• Python и Excel (библио...
Видео 11: обзор виджета QTableWidget и практическое использование
• Python и PyQt обзор ви...

Пікірлер: 8
@nicko6815
@nicko6815 4 жыл бұрын
Очень полезные уроки! Благодарю!
@shakdv
@shakdv 6 жыл бұрын
Ух, хорошо зашло. Прям то, что нужно.
@PyScientist
@PyScientist 6 жыл бұрын
Дмитрий, рад что Вам пригодилось. Продолжение в ближайшее время!
@_sergeevich5827
@_sergeevich5827 6 жыл бұрын
Когда следующие уроки ? Интересуют темы слоты и сигналы, передача данных из одного окна в другое, вызов из главного окна другого. Работа с бд средствами PyQt, использование для этого qtableview.
@PyScientist
@PyScientist 6 жыл бұрын
Александр, Конец 12-го (QToolButton и QStackedWidget) завтра выложу (там будет немного по сигналам и слотам), базы данных будут в 13-ом, разделю его на три части! где-то в течении месяца (конца июня начале июля) запишу все три части 13-го видео! Помню ваши пожелания по qtableview передаче данных из одного окна в другое. Обязательно постараюсь их учесть
@_sergeevich5827
@_sergeevich5827 6 жыл бұрын
PyScientist Notes, благодарю, очень жду ваших уроков, у вас по PyQt они лучшие. Только не забрасывайте это дело.
@PyScientist
@PyScientist 6 жыл бұрын
Александр_Sergeevich Стараюсь для аудитории, не все как профессионал рассказываю, но по мне чем проще тем лучше, главное чтобы практические проблемы решало, а теоретики все в c++.))
@PyScientist
@PyScientist 6 жыл бұрын
import sys from PyQt4 import QtGui, QtCore def add_element(listwidget, icon_path, element_text): item = QtGui.QListWidgetItem() # Cоздаем объект QListWigetItem item.setCheckState(QtCore.Qt.Checked) # Добавляем chekbox для объекта QListWigetItem и делаеи его выделенным item.setIcon(QtGui.QIcon(icon_path)) # Добавляем объект иконки (Qicon) для объекта QListWigetItem elements_number = listwidget.count() item.setText(str(element_text)+' - элемент QListWidget №'+str(elements_number)) # Добавляем название для QListWigetItem listwidget.addItem(item) class Window(QtGui.QWidget): def __init__(self, parent=None): super(Window, self).__init__(parent) self.setWindowTitle('QStackedWidget Example') #Инициализируем объект QPlainTextEdit self.my_text_edit = QtGui.QPlainTextEdit('Simple QPlainTextEdit in QStackedWidget Example') self.my_text_edit.setReadOnly(True) #Инициализируем объект QListWidget self.my_qliswidget = QtGui.QListWidget() for x in range(0, 10): add_element(listwidget=self.my_qliswidget, icon_path='C:\Python36\Scripts\PyScientistNotes\icons\Year_of_Snake_Filled.png', element_text = 'QStackedWidget') #Инициализируем объект QWidget self.my_widget = QtGui.QWidget() #Инициализируем QStackedWidget и передаем в него созданные виджеты self.stacked_widget = QtGui.QStackedWidget() self.stacked_widget.addWidget(self.my_text_edit) self.stacked_widget.addWidget(self.my_qliswidget) self.stacked_widget.addWidget(self.my_widget) #Инициализируем Combobox подав ему в качестве элементов список имен страниц QStackedWidget self.combobox = QtGui.QComboBox() self.combobox.addItems(['my_text_edit', 'my_qliswidget', 'my_widget']) #Создаем вертикальное размещение и помещаем туда сначала ComboBox, а затем QStackedWidget self.vlayout = QtGui.QVBoxLayout() self.vlayout.addWidget(self.combobox) self.vlayout.addWidget(self.stacked_widget) self.setLayout(self.vlayout) #При изменении отображаемого итема (выбора его пользователем) # в combobox спомощью слота изменяем отображаемую # вкладку с использованием метода setCurrentIndex() self.combobox.activated.connect(self.stacked_widget.setCurrentIndex) #Инициализируем объекты кнопок для переключения self.push_button_my_text_edit = QtGui.QPushButton() self.push_button_my_text_edit.setText('push_button_my_text_edit') self.push_button_my_qliswidget = QtGui.QPushButton() self.push_button_my_qliswidget.setText('push_button_my_qliswidget') self.push_button_my_widget = QtGui.QPushButton() self.push_button_my_widget.setText('push_button_my_widget') #Создаем горизонтальное размещение и добавляем туда кнопки self.hlayout = QtGui.QHBoxLayout() self.hlayout.addWidget(self.push_button_my_text_edit) self.hlayout.addWidget(self.push_button_my_qliswidget) self.hlayout.addWidget(self.push_button_my_widget) #Создаем виджет self.widget = QtGui.QWidget() #Устанавливаем размещение в созданный виджет self.widget.setLayout(self.hlayout) #Добавляем виджет в вертикальное размещение self.vlayout.addWidget(self.widget) #Соединяем кнопки с методами изменения индексов self.push_button_my_text_edit.clicked.connect(self.push_button_my_text_edit_Cilck) self.push_button_my_qliswidget.clicked.connect(self.push_button_my_qliswidget_Cilck) self.push_button_my_widget.clicked.connect(self.push_button_my_widget_Cilck) self.vlayout.addWidget(self.stacked_widget) #Добавим в вертикальное размещение текстовое поле self.text_edit = QtGui.QPlainTextEdit() self.vlayout.addWidget(self.text_edit) #Пре изменении вкладки выводится ее имя self.stacked_widget.currentChanged.connect(self.print_text) # Добавим в вертикальное размещение кнопку для удаления виджета из QStackedWidget self.remove_button = QtGui.QPushButton() self.remove_button.setText('remove current widget from QStackedWidget') self.vlayout.addWidget(self.remove_button) #Соединяем кнопку c методом удаления виджета из QStackedWidget self.remove_button.clicked.connect(self.delete_stacked_widget) # Добавим в вертикальное размещение кнопку для добавления виджета в QStackedWidget self.add_button = QtGui.QPushButton() self.add_button.setText('add widget in QStackedWidget') self.vlayout.addWidget(self.add_button) #Соединяем кнопку c методом добавления виджета в QStackedWidget self.add_button.clicked.connect(self.add_stacked_widget) def delete_stacked_widget(self): ''' Удаление виджета отображаемого в данный момент ''' # Получаем ссылку на отображеный виджет current = self.stacked_widget.currentWidget() # Получаем индекс отображенного виджета current_index = self.stacked_widget.currentIndex() # Удаляем виджет отображеный виджет из QStackedWidget self.stacked_widget.removeWidget(self.stacked_widget.currentWidget()) # Удаляем из комбобокса итем связанный с отображаемым вилджетом self.combobox.removeItem(current_index) #Делаем запись о удалении виджета из текстового поля try: self.text = self.text+'Удален widget ('+str(current)+') из QStackedWidget'+' ' except: self.text = 'Удален widget ('+str(current)+') из QStackedWidget'+' ' self.text_edit.setPlainText(self.text) def add_stacked_widget(self): # Получаем колличество элементов в QStackedWidget widgets_count = self.stacked_widget.count() # Создаем виджет PlainTextEdit text_edit = QtGui.QPlainTextEdit('Added QPlainTextEdit '+str(widgets_count)) # добавляем созданный виджет в QStackedWidget self.stacked_widget.addWidget(text_edit) # добавляем итем в Combobox self.combobox.addItem('text_edit'+str(widgets_count)) #Выводим try: self.text = self.text+'Добавили вкладку'+str(text_edit)+' ' except: self.text = 'Добавили вкладку'+str(text_edit)+' ' self.text_edit.setPlainText(self.text) self.stacked_widget.setCurrentWidget(text_edit) def print_text(self): ''' функция вывода в текстовое поле ссылки на включенный виджет ''' # Получаем ссылку на отображенный виджет current = self.stacked_widget.currentWidget() try: self.text = self.text+'сейчас отображается '+str(current)+' ' except: self.text = 'Сейчас отображается '+str(current)+' ' self.text_edit.setPlainText(self.text) def push_button_my_text_edit_Cilck(self): # При нажатии на кнопку виджет QStackedWidget переклюается на вкладку текст self.stacked_widget.setCurrentIndex(0) def push_button_my_qliswidget_Cilck(self): # При нажатии на кнопку виджет QStackedWidget переклюается на вкладку список #self.stacked_widget.setCurrentIndex(1) self.stacked_widget.setCurrentWidget(self.my_qliswidget) def push_button_my_widget_Cilck(self): # При нажатии на кнопку виджет QStackedWidget переклюается на вкладку виджет self.stacked_widget.setCurrentIndex(2) #Создаем объект основного приложения Qt application = QtGui.QApplication(sys.argv) # Создаем объект окна window = Window() window.resize(400, 400) # Отображаем окно window.show() sys.exit(application.exec_())
Schoolboy - Часть 2
00:12
⚡️КАН АНДРЕЙ⚡️
Рет қаралды 9 МЛН
No empty
00:35
Mamasoboliha
Рет қаралды 11 МЛН
Best Toilet Gadgets and #Hacks you must try!!💩💩
00:49
Poly Holy Yow
Рет қаралды 23 МЛН
Windows 7. 15 Years Later.
15:50
Daniel Myslivets
Рет қаралды 122 М.
Налог на незнание JavaScript - [Hamster Kombat]
50:20