Отправляет email-рассылки с помощью сервиса Sendsay

[prg] модуль wx в python

Приветствую, вопрос от чайника.

Есть такой код:

import requests
from bs4 import BeautifulSoup
import wx

class MyForm(wx.Frame):
def __init__(self):
wx.Frame.__init__(self, None, wx.ID_ANY, "Список")

panel = wx.Panel(self, wx.ID_ANY)
self.index = 0

self.list_ctrl = wx.ListCtrl(panel, size=(-1,100),
style=wx.LC_REPORT
|wx.BORDER_SUNKEN
)
self.list_ctrl.InsertColumn(0, 'Статьи')

btn = wx.Button(panel, label="Обновить")
btn.Bind(wx.EVT_BUTTON, self.add_line)

sizer = wx.BoxSizer(wx.VERTICAL)
sizer.Add(self.list_ctrl, 0, wx.ALL|wx.EXPAND, 5)
sizer.Add(btn, 0, wx.ALL|wx.CENTER, 5)
panel.SetSizer(sizer)

def add_line(self, event):
response = requests.get("https://xakep.ru")
page = response.text
soup = BeautifulSoup(page, 'html.parser')
headings = map(lambda e: e.text, soup.select("h3.entry-title a
span"))
for h in headings:
self.list_ctrl.InsertStringItem(self.index, h)

if __name__ == "__main__":
app = wx.App(False)
frame = MyForm()
frame.Show()
app.MainLoop()

Функция add_line вызывается по нажатию кнопки. Подскажите, как эту
функцию вызвать при старте программы?

Спасибо!

Ответить   Tue, 15 Jun 2021 11:55:19 +0300 (#3672087)

 

Ответы:

Приветствую всех!

Вызвать, например, сразу после отображения фрейма:
...
frame.Show()
frame.add_line(None)
...
Можно, чтобы не было задержек перед запуском цикла обработки событий,
использовать: :
wx.CallLater(500, frame.add_line, None)

Успехов. Анатолий.

Ответить   i_chay Wed, 16 Jun 2021 07:38:41 +0400 (#3672149)