Уведомления

Группа в Telegram: @pythonsu

#1 Март 8, 2016 03:19:21

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10003
Репутация: +  857  -
Профиль   Отправить e-mail  

Визуальное программирование на Python

Вот тебе пример, где один скрипт запускает другой несколько раз.
В архиве полные версии.

Вот окно:

def main(argv=[]):
    app = QtGui.QApplication(argv)
    ex = Example()
    return app.exec_()
 
if __name__ == '__main__':
    sys.exit(main(sys.argv))

А вот основная программа:
import w
 
def main():
    for _ in range(3):
        w.main()
 
if __name__ == '__main__':
    main()

Rodegast
Ну отдельная программа должна работать в отдельном процессе.
Вот запусти и посмотри.

Rodegast
Ты мне покажи PEP в котором написано что точку входа нужно импортировать.
В том-то и дело, что приложение Qt никакого отношения к sys.exit() не имеет. ;)
Поэтому ты и можешь выполнить их хоть десяток в пределах одной программы.



Отредактировано py.user.next (Март 8, 2016 03:24:07)

Прикреплённый файлы:
attachment rw.tar.bz2 (448 байт)

Офлайн

#2 Март 8, 2016 15:31:09

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2832
Репутация: +  186  -
Профиль   Отправить e-mail  

Визуальное программирование на Python

> Вот тебе пример, где один скрипт запускает другой несколько раз.

Вот это пример того как пишут код шизофреники. Нормальные люди пишут так:

import sys
from w import Example
 
if __name__ == '__main__':
    app = QtGui.QApplication(sys.argv)
    for _ in range(3):
        ex = Example()
        ex.show()
    sys.exit(app.exec_())    

> В том-то и дело, что приложение Qt никакого отношения к sys.exit() не имеет.

Конечно не имеет. Это имеет отношение к потокам.
https://ru.wikipedia.org/wiki/%D0%9A%D0%BE%D0%B4_%D0%B2%D0%BE%D0%B7%D0%B2%D1%80%D0%B0%D1%82%D0%B0



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Офлайн

#3 Март 9, 2016 01:37:34

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10003
Репутация: +  857  -
Профиль   Отправить e-mail  

Визуальное программирование на Python

Вот тебе ещё пример (расширение первого). Теперь там два разных окна и два разных повторителя.
Запусти r.py в консоли - и увидишь, как он выводит информацию об актуальном окне.

Это код r.py, найдёшь в архиве

#!/usr/bin/env python3
 
import r1
import r2
 
def main():
    r1.main()
    r2.main()
 
if __name__ == '__main__':
    main()

Мне не потребовалось ничего, чтобы сделать всю эту систему.

Rodegast
Это имеет отношение к потокам.
Если ты не заметил, функция main(), вызывающая окно, возвращает код возврата.



Отредактировано py.user.next (Март 9, 2016 01:41:13)

Прикреплённый файлы:
attachment rrww.tar.bz2 (621 байт)

Офлайн

#4 Март 9, 2016 10:51:22

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2832
Репутация: +  186  -
Профиль   Отправить e-mail  

Визуальное программирование на Python

> Запусти r.py в консоли - и увидишь, как он выводит информацию об актуальном окне.
Ну и в чём прикол? В том что ты где-то там print написал? Ты бы лучше не позорился с такими примерами.

> Если ты не заметил, функция main(), вызывающая окно, возвращает код возврата.
Код возврата должен возвращать поток, а не какая-то функция. Тем более у тебя с этим кодом дальше ничего не происходит.



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Офлайн

#5 Март 9, 2016 13:36:34

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10003
Репутация: +  857  -
Профиль   Отправить e-mail  

Визуальное программирование на Python

Rodegast
Ну и в чём прикол? В том что ты где-то там print написал?
Так это совсем разные print'ы. Это совершенно разные программы, которые работают как по отдельности, так и вместе.
Ты же зацикливаешься на какой-то одной программе, не понимая, что такое поток приложения. Ты не можешь запустить несколько разных программ в одной (предлагаешь процессы порождать, потому что не можешь без этого), ты не можешь масштабировать существующие программы, потому что они у тебя на это не расчитаны. Не понимаешь, что такое sys.exit(), зачем он нужен вообще в программе. Слабая теоретическая подготовка.

Rodegast
Код возврата должен возвращать поток, а не какая-то функция.
Ты знаешь вообще, что такое код возврата в программе и зачем он нужен?
Вот это оттого, что у тебя питон - первый и единственный язык. Код возврата нужен только для того, чтобы наружние приложение могли определить результат выполнения программы, так как это требуется при пакетном выполнении. То есть он не нужен ни для какого Qt, само приложение возвращает этот код, чтобы программа, в которой оно создано и запускалось, могла определить, успешно ли оно выполнилось. Это нужно для пользовательских целей, а не для системных, как тебе кажется.



Офлайн

#6 Март 9, 2016 13:48:06

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2832
Репутация: +  186  -
Профиль   Отправить e-mail  

Визуальное программирование на Python

> Это совершенно разные программы, которые работают как по отдельности, так и вместе.
Этим меня не удивить.

> Ты знаешь вообще, что такое код возврата в программе и зачем он нужен?
Ну ничего себе! Википедию прочитал и уже тролить пытается. Ну ты прям гигант!



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Офлайн

#7 Март 9, 2016 14:00:38

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10003
Репутация: +  857  -
Профиль   Отправить e-mail  

Визуальное программирование на Python

Rodegast
Ну ничего себе! Википедию прочитал и уже тролить пытается.
Какую википедию, у меня первый язык - C, там всё это разжёвано со всех сторон. Ты что не знал, что когда ты запускаешь любую программу, она возвращает код возврата, даже если он там нигде не указан?
Ты когда ping делаешь в консоли, ты не знаешь, что он возвращает код возврата? И что python тоже возвращает код возврата? Даже если ты не пишешь sys.exit(), код возврата всё равно возвращается, потому что его не может не быть.

Rodegast
Ну ты прям гигант!
Ну, ты вообще морозишь всякое, как какой-то веб-программист без образования, который с пхп пересел на питон. Не знать про код возврата - это вообще. Это всё равно, что не знать, где компьютер включается. Ты в досе не сидел никогда?

То, что ты про одну точку входа где-то там прочитал, так ты просто неправильно понял эту информацию. Она значит, что нельзя одно приложение начинать несколько раз. А одно приложение продолжается от вызова app.exec_() до выхода из этого вызова. И этот .exec_() возвращает внутренний код возврата этого конкретного приложения. Почему его в sys.exit() и передают, потому что он сам по себе ничего не значит, это просто число, которое описывает, как отработало приложение. Если ноль - всё нормально. А знаешь, почему ноль, а не 1 или 12345? Потому что так сложилось исторически со времён UNIX. Ноль - это истина в UNIX, а не ноль - это ложь.



Отредактировано py.user.next (Март 9, 2016 14:11:31)

Офлайн

#8 Март 9, 2016 14:23:15

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2832
Репутация: +  186  -
Профиль   Отправить e-mail  

Визуальное программирование на Python

> Какую википедию
Я же тебе тут сцылку дал.
http://python.su/forum/topic/29455/?page=4#post-159859

> Ну, ты вообще морозишь всякое
Похоже что ты тут уже специально придуриваешся.



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Офлайн

#9 Март 9, 2016 15:21:50

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10003
Репутация: +  857  -
Профиль   Отправить e-mail  

Визуальное программирование на Python

Rodegast
Я же тебе тут сцылку дал.
Да я глянул сейчас, ничего там нет, очень поверхностно.

Никогда не видел выражения
[guest@localhost ~]$ if [ 1 -le 5 ]; then echo yes; else echo no; fi
yes
[guest@localhost ~]$ if [ 6 -le 5 ]; then echo yes; else echo no; fi
no
[guest@localhost ~]$
?

Вот знаешь, что такое
[ 1 -le 5 ]
?
Это программа, которая возвращает код возврата.
И if как раз его и проверяет; истиной считается нулевой код возврата, поэтому по нулевому коду срабатывает ветвь then. А если там не нулевой код возврата, то срабатывает ветвь else.

Вот тебе ещё пример, как запустить else
[guest@localhost ~]$ if ping nothing; then echo yes; else echo no; fi
ping: unknown host nothing
no
[guest@localhost ~]$
Как получилось, что произошёл переход в else? Просто ping не сработал и вернул ненулевой код возврата. А if считает такой код ложным. Это хоть и внутреннее дело bash, как вести себя в if'е, но оно проистекает из истории, из того, как было в sh, из которого bash вырос.

Rodegast
Похоже что ты тут уже специально придуриваешся.
Я могу тебе пример закинуть ещё. Но ты в этих-то не разобрался. Там просто, я боюсь, у тебя вообще крыша поедет от того, как оно там всё работает. Ведь оно перевернёт всю твою теорию, что типа планета держится на трёх китах - что приложение может быть только одно в каждый момент времени.



Отредактировано py.user.next (Март 9, 2016 15:26:42)

Офлайн

#10 Март 9, 2016 15:36:36

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2832
Репутация: +  186  -
Профиль   Отправить e-mail  

Визуальное программирование на Python

> Я могу тебе пример закинуть ещё.
И нахрена ты мне их вообще показываешь? Напомню что я привёл 3 довода доказывающие что твоя методичка отстой:

1) Основное окно наследуется от QWidget
2) Метод initUI
3) Зачем то сделали функцию main.
Все эти примеры никакого отношения к этому не имеют.



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version