Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 6, 2017 18:48:37

andrey.y24
Зарегистрирован: 2017-04-06
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Проблема с Tkinter

Всем привет. Столкнулся с проблемой при написании программы. Буду благодарен, если подскажете, в каком месте ошибка. Есть веб-интерфейс, реализованный через Tkinter, содержащий одну кнопку. При ее нажатии, должны парситься titles с сайта globo.com

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


from lxml import html
import requests
from bs4 import BeautifulSoup

def news():
page = requests.get('http://www.globo.com/index.html')

soup = BeautifulSoup(page.content, ‘html.parser’)
bbb = soup.find_all('p', class_='hui-premium__title')
for item in bbb:
ccc = item.get_text('p')
print(ccc)


from tkinter import *
master = Tk()

b = Button(master, text=“latest news”, command='news()')
b.pack()

mainloop()

Офлайн

#2 Апрель 6, 2017 20:58:34

PEHDOM
Зарегистрирован: 2016-11-28
Сообщения: 2196
Репутация: +  294  -
Профиль   Отправить e-mail  

Проблема с Tkinter

неправильно:

andrey.y24
b = Button(master, text=“latest news”, command='news()')
правильно:
 b = Button(master, text=latest news, command=news)



==============================
Помещайте код в теги:
[code python][/code]
Бериегите свое и чужое время.

Отредактировано PEHDOM (Апрель 6, 2017 20:58:52)

Офлайн

#3 Апрель 6, 2017 23:36:10

andrey.y24
Зарегистрирован: 2017-04-06
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Проблема с Tkinter

@PEHDOM спасибо, но не помогло
Все равно, сначала запускается функция, и потом только появляется окно с кнопкой. Как же сделать, чтоб функция запускалась только после нажатия кнопки?

Офлайн

#4 Апрель 6, 2017 23:41:34

4kpt_V
От: Харьков
Зарегистрирован: 2017-02-19
Сообщения: 299
Репутация: +  12  -
Профиль   Отправить e-mail  

Проблема с Tkinter

andrey.y24
Я думаю, Вы сделали

  b = Button(master, text=latest news, command=news())

Это неверно. Вы связываете обработчик с результатом выполнения функции, а не с функцией…
Уберите скобки после news.

Если я не прав, то предоставьте код сюда и предварительно оберните его тегами code. Иначе не читабельно.

Офлайн

#5 Апрель 7, 2017 00:17:06

andrey.y24
Зарегистрирован: 2017-04-06
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Проблема с Tkinter

@4kpt_V

Убрал скобки, все равно функция запускается сразу, до нажатия кнопки (

from lxml import html
import requests
from bs4 import BeautifulSoup
import terra_web_scraping
from terra_web_scraping import *

def news():
page = requests.get('http://www.globo.com/index.html')

soup = BeautifulSoup(page.content, 'html.parser')
bbb = soup.find_all('p', class_='hui-premium__title')
for item in bbb:
ccc = item.get_text('p')
print(ccc)


from tkinter import *
master = Tk()



b = Button(master, text="latest news", command=news)
b.pack()

mainloop()

Отредактировано andrey.y24 (Апрель 7, 2017 00:17:34)

Офлайн

#6 Апрель 7, 2017 12:20:59

4kpt_V
От: Харьков
Зарегистрирован: 2017-02-19
Сообщения: 299
Репутация: +  12  -
Профиль   Отправить e-mail  

Проблема с Tkinter

Возникает ощущение, что Вы нас обманываете. Что делает тогда такой код

 #
from tkinter import *
from lxml import html
import requests
from bs4 import BeautifulSoup
import terra_web_scraping
from terra_web_scraping import *
def news():
    print("callback")
master = Tk()
b = Button(master, text="latest news", command=news)
b.pack()
master.mainloop()

Отредактировано 4kpt_V (Апрель 7, 2017 12:22:21)

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version