1 / 1 / 0
Регистрация: 29.10.2017
Сообщений: 102
PyQt4

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

02.11.2017, 14:49. Показов 3721. Ответов 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
Ответ Создать тему
Опции темы

Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! в-строка - входное арифметическое выражение в инфиксной(обычной). . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru