Найти - Пользователи
Полная версия: Проблема с Tkinter
Начало » Python для новичков » Проблема с Tkinter
1
andrey.y24
Всем привет. Столкнулся с проблемой при написании программы. Буду благодарен, если подскажете, в каком месте ошибка. Есть веб-интерфейс, реализованный через 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()
PEHDOM
неправильно:
andrey.y24
b = Button(master, text=“latest news”, command='news()')
правильно:
 b = Button(master, text=latest news, command=news)
andrey.y24
@PEHDOM спасибо, но не помогло
Все равно, сначала запускается функция, и потом только появляется окно с кнопкой. Как же сделать, чтоб функция запускалась только после нажатия кнопки?
4kpt_V
andrey.y24
Я думаю, Вы сделали

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

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

Если я не прав, то предоставьте код сюда и предварительно оберните его тегами code. Иначе не читабельно.
andrey.y24
@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()
4kpt_V
Возникает ощущение, что Вы нас обманываете. Что делает тогда такой код

 #
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()
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB