Форум программистов, компьютерный форум, киберфорум
Python: GUI, графика
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/18: Рейтинг темы: голосов - 18, средняя оценка - 4.56
1 / 1 / 0
Регистрация: 29.10.2017
Сообщений: 102
PyQt4

Объясните пожалуйста работу этого кода

02.11.2017, 14:49. Показов 3707. Ответов 17
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Python
1
2
3
4
class MyWindowClass(QtGui.QMainWindow, form_class):
    def __init__(self, parent=None):
        QtGui.QMainWindow.__init__(self, parent)
        self.setupUi(self)
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
02.11.2017, 14:49
Ответы с готовыми решениями:

Объясните пожалуйста работу этого кода
x = True y = False z = False if not x or y: print(1) elif not x or not y and z: print(2) elif not x or y or not y and...

Объясните часть кода пожалуйста
a = cnt = 0 for i in a: if a.count(i) == 1: cnt = cnt + 1 print(cnt) В данном коде что означает 1 строка и...

Объясните пожалуйста часть кода
Подскажите пожалуйста, у меня есть код: from random import randint b = int(input("Введите n: ")) xs = print("Имеем массив...

17
Эксперт Python
 Аватар для dondublon
4652 / 2072 / 366
Регистрация: 17.03.2012
Сообщений: 10,182
Записей в блоге: 6
02.11.2017, 15:44
Лучший ответ Сообщение было отмечено RonaxIT как решение

Решение

Создаём класс, потомок QtGui.QMainWindow. Роль form_class неясна.
Как обычно, вызываем конструктор суперкласса - QtGui.QMainWindow.__init__(self, parent)
self.setupUi(self) - создаём все графические элементы в этом экземпляре. Элементы сначала описываются в .ui (как правило), потом на его основе генерится .py через pyuic4.
1
1 / 1 / 0
Регистрация: 29.10.2017
Сообщений: 102
08.11.2017, 17:39  [ТС]
А зачем в строке self.setupUi(self) в скобках указывать Self? QtGui это и есть конструктор?
0
Эксперт Python
 Аватар для dondublon
4652 / 2072 / 366
Регистрация: 17.03.2012
Сообщений: 10,182
Записей в блоге: 6
09.11.2017, 09:18
RonaxIT, задумался и вспомнил, что значит form_class Сорри, уже год как с PyQt не работал, забыл слегка.
form_class - это и есть тот самый сгенерённый класс со всеми контролами. Именно от него наследуем метод setupUi.
Он принимает "себя" в качестве параметра, чтобы именно в себе и создать эти контролы.

Вызываем мы setupUi в ипостаси QMainWindow (шире - QWidget), а исполняем в ипостаси form_class. Это уже можно посмотреть самому.
1
1 / 1 / 0
Регистрация: 29.10.2017
Сообщений: 102
10.11.2017, 16:09  [ТС]
Что такое контролл?
0
11.11.2017, 17:12

Не по теме:

кнопка слева от альт

0
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
12.11.2017, 12:38
RonaxIT, это виджеты располагаемые в окне (кнопки, текстовые поля и т д)
1
1 / 1 / 0
Регистрация: 29.10.2017
Сообщений: 102
12.11.2017, 13:12  [ТС]
То есть form_class принимает себя в качестве значения, чтобы при создании экземпляра и отображения вывел сам себя?
(Что-то не понятно объяснить попроще)

Добавлено через 3 минуты
QtGui - это конструктор?
QtMainWindow - это суперкласс?
0
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
12.11.2017, 14:46
Цитата Сообщение от RonaxIT Посмотреть сообщение
QtGui - это конструктор?
Это модуль
Цитата Сообщение от RonaxIT Посмотреть сообщение
QtGui.QMainWindow.__init__(self, parent)
А вот это вызов конструктора родительского класса.
Цитата Сообщение от RonaxIT Посмотреть сообщение
QtMainWindow - это суперкласс?
Да, это наследуемый класс (супер класс, родительский класс)
1
Эксперт Python
 Аватар для dondublon
4652 / 2072 / 366
Регистрация: 17.03.2012
Сообщений: 10,182
Записей в блоге: 6
14.11.2017, 11:00
Лучший ответ Сообщение было отмечено RonaxIT как решение

Решение

Цитата Сообщение от RonaxIT Посмотреть сообщение
То есть form_class принимает себя в качестве значения, чтобы при создании экземпляра и отображения вывел сам себя?
Да. Только не вывел, а создал контролы.
Вы можете нанести на себя самостоятельно татуировку? Вот и тут похожая ситуация.
Но только правой рукой (к примеру). На что? На живот, к примеру.
Своей правой рукой можете нанести татуировку не только на свой живот, но и на чужой (аналог ситуации - в setupUi передан другой параметр, не self).
1
1 / 1 / 0
Регистрация: 29.10.2017
Сообщений: 102
19.11.2017, 16:52  [ТС]
Наверное последние вопросы.
form_class - это сгенёренный класс со всеми его контролами, это те контролы которые мы создали в QtDesigner?

То есть сначала через self.setupUi(self) создаём все графические элементы в этом экземпляре, какую роль здесь играет form_class?

Что такое parent?

Добавлено через 23 часа 34 минуты
Тогда почему пишем QtGui.QMainWindow разве можно так писать, модуль.класс?

Добавлено через 17 минут
И разве form_class это класс?
0
Эксперт Python
 Аватар для dondublon
4652 / 2072 / 366
Регистрация: 17.03.2012
Сообщений: 10,182
Записей в блоге: 6
20.11.2017, 12:04
Цитата Сообщение от RonaxIT Посмотреть сообщение
form_class - это сгенёренный класс со всеми его контролами, это те контролы которые мы создали в QtDesigner?
да
Цитата Сообщение от RonaxIT Посмотреть сообщение
То есть сначала через self.setupUi(self) создаём все графические элементы в этом экземпляре, какую роль здесь играет form_class?
так они ж там все описаны
Цитата Сообщение от RonaxIT Посмотреть сообщение
Что такое parent?
параметр - кто будет "владеть" этим виджетом. Связано со сборкой мусора. Обычно передаётся "верхний" виджет, где это всё располагается.
Цитата Сообщение от RonaxIT Посмотреть сообщение
Тогда почему пишем QtGui.QMainWindow разве можно так писать, модуль.класс?
конечно
Цитата Сообщение от RonaxIT Посмотреть сообщение
И разве form_class это класс?
Не веришь - проверь.
0
1 / 1 / 0
Регистрация: 29.10.2017
Сообщений: 102
23.11.2017, 15:00  [ТС]
Напишите про parent попроще (Заранее спасибо, остальное всё понял).
0
Эксперт Python
 Аватар для dondublon
4652 / 2072 / 366
Регистрация: 17.03.2012
Сообщений: 10,182
Записей в блоге: 6
23.11.2017, 16:54
Для начала почитайте доку, если что-то останется непонятно - велкам.
0
1 / 1 / 0
Регистрация: 29.10.2017
Сообщений: 102
24.11.2017, 15:28  [ТС]
Прочитал, но про parent там не подробно сказано.
Объясните пожалуйста.
0
Эксперт Python
 Аватар для dondublon
4652 / 2072 / 366
Регистрация: 17.03.2012
Сообщений: 10,182
Записей в блоге: 6
24.11.2017, 16:54
http://doc.qt.io/qt-4.8/qwidget.html#QWidget

If parent is 0, the new widget becomes a window. If parent is another widget, this widget becomes a child window inside parent. The new widget is deleted when its parent is deleted.
0
1 / 1 / 0
Регистрация: 29.10.2017
Сообщений: 102
25.11.2017, 19:08  [ТС]
Непонятно (объясните попроще).
Если parent=0 или None то MyWindowClass из виджета стал окном?
А если я создам ещё один класс (потомок MainWindowClass) то этот класс(окно) будет дочерним?

Добавлено через 2 минуты
Более подробно и попроще объясните про parent (остальное я всё понял).
0
Эксперт Python
 Аватар для dondublon
4652 / 2072 / 366
Регистрация: 17.03.2012
Сообщений: 10,182
Записей в блоге: 6
27.11.2017, 11:57
Да куда уж проще.
Цитата Сообщение от RonaxIT Посмотреть сообщение
Если parent=0 или None то MyWindowClass из виджета стал окном?
Да.
Цитата Сообщение от RonaxIT Посмотреть сообщение
А если я создам ещё один класс (потомок MainWindowClass) то этот класс(окно) будет дочерним?
Не понимаю до конца, что значит "создам ещё один класс". Мы же говорим о параметре parent?

parent означает, кто будет держать ссылку на этот объект. То есть, когда родитель удалится - он "потянет" за собой все дочерние виджеты.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
27.11.2017, 11:57
Помогаю со студенческими работами здесь

Объясните пожалуйста пару строчек кода
С помощью текстового редактора определите, сколько раз, не считая сносок, встречается слово «свет» или «Свет» в тексте романа в стихах А....

Объясните построчно смысл кода пожалуйста
import math from operator import * def CalculateDistance(train, test): distance = 0 for i in range(4): distance +=...

Доброе утро, объясните, пожалуйста, строчки данного кода
def is_palindrome(n): return str(n) == str(n) a = int(input("Введите число 1: ")) b = int(input("Введите число 2: ")) ...

Будьте добры, напишите пожалуйста пояснение к строчкам этого кода (сколько сможете) очень надо(
global z global x n= z=2 x=5 def kom1(gen,first): gen.pop() gen.insert(0,first) return gen def kom2(g1):

Объясните работу этого кода
Приветствую только начал изучать JS по учебнику. Сейчас тема объектов. Натолкнулся там на такой пример, который вообще никак не догоняю....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Новые блоги и статьи
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru