Форум программистов, компьютерный форум, киберфорум
Python: Web
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.53/19: Рейтинг темы: голосов - 19, средняя оценка - 4.53
1 / 1 / 3
Регистрация: 10.03.2018
Сообщений: 150

Как выполнить код функции после полной загрузки формы wxPython

28.11.2018, 21:43. Показов 3984. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый вечер.
Как выполнить код функции после полной загрузки формы wxPython?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
28.11.2018, 21:43
Ответы с готовыми решениями:

Как выполнить действие после полной загрузки формы? События Load и Shown не подходят!
Добрый день, народ! Подскажите, пожалуйста! Как выполнить действие после ОКОНЧАТЕЛЬНОЙ И ПОЛНОЙ ЗАГРУЗКИ формы? Событие Load происходит...

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

Выполнения кода после полной загрузки формы но только 1 раз
Здравствуйте. Как сделать выполнения кода но после полной загрузки формы и только 1 раз Например Событие OnCreate происходит до. ...

10
1741 / 913 / 480
Регистрация: 05.12.2013
Сообщений: 3,074
29.11.2018, 21:30
Раньше были события при открытии окна, а в последних версиях их убрали https://docs.wxpython.org/wx.W... this-class

что делать не понятно, может EVT_ACTIVATE попробовать
0
1 / 1 / 3
Регистрация: 10.03.2018
Сообщений: 150
29.11.2018, 22:23  [ТС]
Дело в том, что мне нужно показать окно с формой, а потом выполнить код.

Python
1
2
3
4
5
6
7
if __name__ == '__main__':
    app = App()
    frame = MyFrame()
    frame.Show()
    frame.Centre()
    User.loadCookie(User)
    app.MainLoop()
При таком исполнении показывается форма с зависшими в полуотображенном состоянии элементами, выполняется код User.loadCookie(User) и только после элементы на форме отображаются полностью.
Как буд то отображение формы и код выполняются одновременно.
Может я что то делаю не так?

Добавлено через 3 минуты
И почему то при появлении формы, она появляется сначала в левой части экрана, а потом центрируется и этот процесс кратковременный визуально видно

Код формы:

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
class MyFrame(wx.Frame):
    def __init__(self):
        #Создание фрейма
        wx.Frame.__init__(self, None, -1, "Помошник организатора", size = (450, 515))
        #Создание панели
        self.panel = wx.Panel(self, -1)
        #Создание поля для ввода логина
        self.login = wx.TextCtrl(self.panel, -1, size = (250, 25), pos = (10, 25), value = User.readConfig(User, 'login'))
        #Создание поля для ввода пароля
        self.password = wx.TextCtrl(self.panel, -1, size = (250, 25), pos = (10, 55), style = (wx.TE_PASSWORD), value = User.readConfig(User, 'password'))
        #Создание чекбокса для запоминания авторизации
        self.check = wx.CheckBox(self.panel, -1, size = (250, 25), pos = (10, 85), label = '  запомнить авторизацию')
        #Установка статуса чекбокса из файла конфигурации
        self.check.SetValue(state = distutils.util.strtobool(User.readConfig(User, 'auth_check')))
        #Указание функции, которая выполнится при изменении статуса чекбокса
        self.check.Bind(wx.EVT_CHECKBOX, self.Change_click)
        #Создание кнопки авторизации
        self.auth = wx.Button(self.panel, -1, size = (250, 25), pos = (10, 115), label = "Авторизоваться")
        #Указание функции, которая выполнится при нажатии на кнопку
        self.auth.Bind(wx.EVT_BUTTON, self.Auth_click)
        #Создание кнопки для загрузки галереии
        self.expgalerey = wx.Button(self.panel, -1, size = (150, 25), pos = (270, 85), label = "Загрузить галереи")
        #Указание функции, которая выполнится при нажатии на кнопку
        self.expgalerey.Bind(wx.EVT_BUTTON, self.Galerey_click)
        #Деактивация кнопки
        self.expgalerey.Disable()
        #Создание кнопки для выгрузки галереи в прайс
        self.impprice = wx.Button(self.panel, -1, size = (150, 25), pos = (270, 115), label = "Выгрузить прайс")
        #Указание функции, которая выполнится при нажатии на кнопку
        self.impprice.Bind(wx.EVT_BUTTON, self.Price_click)
        #Деактивация кнопки
        self.impprice.Disable()
        #Создание многострочного текстового поля для реализации лога работы программы
        self.log = wx.TextCtrl(self.panel, -1, size = (425, 325), pos = (5, 145), style = wx.TE_READONLY|wx.TE_MULTILINE)
        #Деактивация поля
        self.log.Disable()
        #Проверить авторизацию
        User.stateAuth(self)
0
1741 / 913 / 480
Регистрация: 05.12.2013
Сообщений: 3,074
30.11.2018, 05:27
Лучший ответ Сообщение было отмечено kmvcf как решение

Решение

Цитата Сообщение от kmvcf Посмотреть сообщение
Как буд то отображение формы и код выполняются одновременно.
Может я что то делаю не так?
Не одновременно, а последовательно

сначала окно отрисовывается, затем центрируется, затем отрабатывает функция loadCookie, а после этого начинает работать главный цикл программы

Поменяйте местами Show и Centre

Python
1
2
frame.Centre()
frame.Show()
А User.loadCookie(User) вызывайте в начале __init__ класса MyFrame
0
1 / 1 / 3
Регистрация: 10.03.2018
Сообщений: 150
04.12.2018, 12:42  [ТС]
Цитата Сообщение от ТабуретY Посмотреть сообщение
Поменяйте местами Show и Centre
Спасибо. Помогло.
Цитата Сообщение от ТабуретY Посмотреть сообщение
А User.loadCookie(User) вызывайте в начале __init__ класса MyFrame
Это не работает. Все равно на экране появляется форма с не до конца отрисованными элементами, выполняется функция User.loadCookie(User), а уже потом отрисовываются элементы формы.
Почему так происходит?
Цитата Сообщение от ТабуретY Посмотреть сообщение
может EVT_ACTIVATE попробовать
Это то же не помогло.

Добавлено через 10 минут
Цитата Сообщение от ТабуретY Посмотреть сообщение
А User.loadCookie(User) вызывайте в начале __init__ класса MyFrame
Функция не отрабатывает должным образом, т.к. в ней используются данные из формы, которые подгружаются при ее создании.

Добавлено через 3 минуты
Помогает если расположить функцию User.loadCookie(User) в конце __init__ класса MyFrame.
но в таком случае сначала выполняется функция и пользователь успевает подумать, что программа зависла. А уже потом отображается форма.
Если можно было бы предупредить пользователя о том что программа не зависла, сообщением посреди экрана или курсором с часами, но я пока не знаю как это сделать.
0
1 / 1 / 3
Регистрация: 10.03.2018
Сообщений: 150
04.12.2018, 18:54  [ТС]
Это скрин в момент запуска.
В этот момент происходит проверка авторизации.
Программа как буд то зависла.
Миниатюры
Как выполнить код функции после полной загрузки формы wxPython  
0
1 / 1 / 3
Регистрация: 10.03.2018
Сообщений: 150
04.12.2018, 18:55  [ТС]
Этот скрин сделан после выполнения проверки авторизации. Форма полностью отрисовалась.
Миниатюры
Как выполнить код функции после полной загрузки формы wxPython  
0
1741 / 913 / 480
Регистрация: 05.12.2013
Сообщений: 3,074
04.12.2018, 20:50
Лучший ответ Сообщение было отмечено kmvcf как решение

Решение

Авторизацию в отдельном потоке сделай
0
1 / 1 / 3
Регистрация: 10.03.2018
Сообщений: 150
04.12.2018, 22:47  [ТС]
Цитата Сообщение от ТабуретY Посмотреть сообщение
Авторизацию в отдельном потоке сделай
Я только учусь, с отдельными потоками не работал. Подскажите какую часть документации изучать, какой модуль?
threading или есть другие варианты, наиболее эффективные?
0
1741 / 913 / 480
Регистрация: 05.12.2013
Сообщений: 3,074
04.12.2018, 23:12
Лучший ответ Сообщение было отмечено kmvcf как решение

Решение

Вот тут можно почитать https://python-scripts.com/wxp... n-wxpython
0
1 / 1 / 3
Регистрация: 10.03.2018
Сообщений: 150
05.12.2018, 08:11  [ТС]
Спасибо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
05.12.2018, 08:11
Помогаю со студенческими работами здесь

Выполнить код до загрузки формы
Добрый день! C#, VS2010 Как сделать чтоб в WindowsFormApplication появлялось окно, а после этого без участия пользователя выполнялся код...

Вывод тегов после загрузки полной загрузки документа
День добрый! В jquery и js совсем недавно, ещё не во всём разобрался, но пытаюсь применить на практике. Вопрос следующий пытаюсь вывести...

Как выполнять действия после полной загрузки страницы браузера webBrowser?
Я уже пол вечера мучаюсь, перелазил целую кучу страниц, нашел 2 способа, но оба почему то правильно не работают. Первым же было события...

Как после полной загрузки страницы автоматически запустить flash player
Как автоматически запустить этот плейер после полной загрузки страницы? <html g_init="6893"...

Как продолжить выполнение программы, после полной загрузки сайта в элементе WebBrowser?
В visual studio 2012. Пробывал так: Do Loop While WebBrowser1.IsBusy Но у меня программа продолжает работа, хотя...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru