Счетчик данных из HTML-файла

#python #tkinter

#python #tkinter

Вопрос:

У меня есть задача, в которой мы перечисляем 10 элементов из HTML с использованием регулярных выражений.

Мне удалось перечислить 10 вещей с веб-сайта, но мне нужны цифры рядом с ними при отображении на tkinter.

Например, от 1 до 10 и / или от 10 до 1, как это: пример:
пример

Я знаю, что мне нужно использовать цикл for, но я не знаю как, и уже довольно давно занимаюсь исследованиями.

Вот мой код для одного из моих окон:

 def hidden_gems_on_disney_window():
    hidden_gems_on_disney = Tk()
    hidden_gems_on_disney['bg'] = 'pink'
    hidden_gems_on_disney.title('10 Hidden Gems On Disney ')
    hidden_gems_on_disney.geometry('500x500')
    Label(hidden_gems_on_disney, text = '10 Hidden Gems On Disney  You Totally Missed', bg = 'SeaGreen2', font = ('Calibri', 15)).place(x=50, y=45)
    url = 'https://screenrant.com/disney-plus-hidden-gems/'
    web_page = urlopen(url)
    web_page_contents = web_page.read().decode('UTF-8')
#the pattern that I found to list my top 10.
    regex = r'(?<=</span>)(.*)(?=</h2>)'
#-------------------------------------------
    disney_plus = re.findall(regex, web_page_contents)
    x_coord = 40
    y_coord = 90
#This for loop shows top 10 contents on this website. There are already just 10 names, so in this case, it is not neccasery to use counter.
    for hidden_gems in disney_plus:
        Label(hidden_gems_on_disney, text = hidden_gems, bg ='pink', font = ('Malgun', 10)).place(x= x_coord, y= y_coord)
        y_coord = y_coord   38
#Label for the hyperlink. Once clicked, it opens a browser and shows the webpage where data comes from.
    most_popular_songs_link = Label(hidden_gems_on_disney, text = 'https://screenrant.com/disney-plus-hidden-gems/', fg='dark green')
    most_popular_songs_link.place(x = 110, y = 475)
    most_popular_songs_link.bind('<Button-1>', lambda e: callback(url))
    
    mainloop()
  

Это вывод для этого окна.:
Это вывод для этого окна.

Поскольку этот веб-сайт занимает от 10 до 1, я хочу отображать числа от 10 до 1, но также хотел бы посмотреть, как это сделать для от 1 до 10, если это как-то отличается.

Комментарии:

1. Пожалуйста, покажите, какой код у вас уже есть для графического интерфейса tkinter. Какой виджет вы используете для отображения списка?

2. Кстати, использование place() является ненужным усложнением .pack() или .grid() проще в использовании (нет необходимости вычислять смещение, чтобы виджеты не перекрывались).

3. почему вы удалили свой опубликованный код?

Ответ №1:

Вы можете использовать enumerate() функцию в for цикле:

 font = ('Malgun', 10)
for i, hidden_gems in enumerate(disney_plus[::-1], 1):  # in reverse order
    Label(hidden_gems_on_disney, text='{})'.format(i), bg='pink', font=font).place(x=x_coord, y=y_coord)
    Label(hidden_gems_on_disney, text=hidden_gems, bg='pink', font=font).place(x=x_coord 25, y=y_coord)
    y_coord  = 38
  

Ответ №2:

Добавьте счетчик в свой цикл.

 
#This for loop shows top 10 contents on this website. There are already just 10 names, so in this case, it is not neccasery to use counter.
    counter=10;
    for hidden_gems in disney_plus:
        Label(hidden_gems_on_disney, text = str(counter)   ". "   hidden_gems, bg ='pink', font = ('Malgun', 10)).place(x= x_coord, y= y_coord)
        y_coord = y_coord   38
        counter = counter -1
  

Если вы хотите увеличить счетчик, инициализируйте с counter=1 помощью и увеличьте с помощью counter = counter 1