#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)