Устранение неполадок в графическом интерфейсе tkinter, который извлекает html-код и отображает его с веб-сайтов?

#python #html #user-interface #tkinter

#python #HTML #пользовательский интерфейс #tkinter

Вопрос:

мне нужно разработать интерактивную программу, которая позволяет своим пользователям выбирать из нескольких ранжированных HTML-списков и с помощью виджетов выбирать определенный HTML-код для отображения текущей 2-й позиции в каждом списке. Каждый виджет каждый раз слишком отображает список differnet с другого веб-сайта HTML. Я настроил все свои виджеты и свой графический интерфейс, но я не уверен, как выполнить эту задачу для каждого виджета, извлекающего HTML-код и отображающего его в окне.

Основные проблемы, с которыми у меня возникают, — это извлечение HTML-кода с живого веб-сайта и отображение его с помощью моих виджетов radiobutton. Надеюсь, кто-нибудь сможет указать мне правильное направление.

Вот код, который я завершил до сих пор

 
root = Tk()
root.title("Runners Up")
root.config(background = "#f0f0f0")

test_status0 = BooleanVar()
test_status1 = BooleanVar()
test_status2 = BooleanVar()
test_status3 = BooleanVar()
test_status4 = BooleanVar()
 

#Label Frame for Radio Buttons
radiobuttonsframe = LabelFrame(root, relief = 'groove', font = 'Arial',
                              borderwidth = 5)
radiobuttonsframe.grid(row=0, column=1, padx=10, pady=2)


#Picture Label Frame
PicFrame = LabelFrame(root, relief = 'groove', borderwidth = 5)
PicFrame.grid(row=0, column=0, padx=10, pady=2)


#Display Frame (Runner Up)
RunnerFrame = LabelFrame(root, relief = 'groove', borderwidth = 5, font = 'Arial',
                         text = 'Runner Up')
RunnerFrame.grid(row=1, column=0, padx=10, pady=2)


#Display Frame (Full List)
ListFrame = LabelFrame(root, relief = 'groove', borderwidth = 5, font = 'Arial',
                       text = 'Full List')
ListFrame.grid(row=1, column=1, padx=10, pady=2)


#Importing Photo
Picture1 = PhotoImage(file="Secondplace.gif")
Label(PicFrame, image=Picture1).grid(row=0, column=0, padx=10, pady=2)



#Frames for each widget
btnFrame = LabelFrame(radiobuttonsframe, relief = 'groove',
                      font = 'Arial', borderwidth = 2, text = 'Current Runner Ups', background="#f0f0f0")
btnFrame.grid(row=1, column=0, padx=10, pady=2)

btnFramePrev = LabelFrame(radiobuttonsframe, relief = 'groove',
                      font = 'Arial', borderwidth = 2, text = 'Previous Runner Ups', background="#f0f0f0")
btnFramePrev.grid(row=2, column=0, padx=10, pady=50)

updaterBtn = LabelFrame(radiobuttonsframe, relief = 'groove',
                      font = 'Arial', borderwidth = 2, background="#f0f0f0")
updaterBtn.grid(row=3, column=0, padx=10, pady=2)


#Button Music Runner ups
MusicButton = Radiobutton(btnFrame, text="Top Album Charts [Title and Artist]",
                     height=2, width=50, value = test_status1, command = test1)
MusicButton.grid(row=0, column=0, padx=10, pady=2)

#Button for Movie Runner ups
MovieButton = Radiobutton(btnFrame, text="Movie Charts [Title and Production]",
                     height=2, width=50, value = test_status2, command = test1)
MovieButton.grid(row=1, column=0, padx=10, pady=2)

#Button for games runner ups
GamesButton = Radiobutton(btnFrame, text="Game Charts [Title and Players]",
                     height=2, width=50, value = test_status3, command = test1)
GamesButton.grid(row=2, column=0, padx=10, pady=2)

#Button for Medal runner ups
MedalButton = Radiobutton(btnFramePrev, text="Medal 2001 [Name and Votes]",
                   height=2, width=50, value = test_status4, command = test1)
MedalButton.grid(row=3, column=0, padx=10, pady=2)


#Scroll Bar for full list of winners
ListScroll = ScrolledText(ListFrame, width=40, height=10)
ListScroll.grid(row=0, column=0, padx=10, pady=2)

#Text Box for our main Runners Up
RunnersText = Text(RunnerFrame, width=50, height=10)
RunnersText.grid(row=0, column=0, padx=10, pady=2)

#Update and Show Source Buttons
Update = Button(updaterBtn, text="Update", height=2, width=10)
Update.grid(row=0, column=0, padx=10, pady=2)
ShowSource = Button(updaterBtn, text="Show Source", height=2, width=10)
ShowSource.grid(row=0, column=1, padx=10, pady=2)
root.mainloop() 
  

РЕДАКТИРОВАТЬ//
Я понял, как запускать кнопки, но теперь у меня возникли проблемы с отображением HTML-текста в моем текстовом поле.

Вот моя попытка попробовать это:

 def MusicRunner():
    RunnersText.delete(0.0, END)
    site = 'Official Charts'
    feed_web = download('https://www.officialcharts.com/charts/singles-chart/')
    items = findall(r'<body class="sticky-nav" style b[^>]*>(.*?)</body>', feed_web, flags=MULTILINE|DOTALL)
    num = findall(r'<span class= "position">"2"</span>',feed_web, flags=MULTILINE|DOTALL)   
    RunnersText.insert(INSERT, num)