Тёмный

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

PyScientist
Подписаться 4,5 тыс.
Просмотров 2,6 тыс.
50% 1

Опубликовано:

 

25 окт 2024

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 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_())
Далее
진 (Jin) 'I'll Be There' Official MV
03:15
Просмотров 7 млн
Ilkinchi hotin oberasanmi deb o’ylabman🥹😄
00:26
Python and Jupyter Notebook introduction
25:33
Python Code Review PyQt QTableWidget
21:25
Просмотров 2,3 тыс.
진 (Jin) 'I'll Be There' Official MV
03:15
Просмотров 7 млн