В вашем коде есть пара ошибок,
- Определите функцию
searchgo
, прежде чем назначить обратный вызов для вашей кнопки - . В этом коде лучше использовать
grid
для размещения Вы нажимаете кнопку вместо place
или получаете следующую ошибку
cannot use geometry manager pack inside . (root) which already has slaves managed by grid
Причина этой ошибки в том, что вы не можете использовать менеджеры геометрии пакетов и сетки внутри того же главного окна (root в этой программе). Поскольку вы использовали grid
для большинства виджетов, используйте grid
для размещения кнопки.
Кроме того, если вы не знаете, в grid
Диспетчер геометрии row
и column
значения позиций начинаются с 0
, а не 1
Вот код:
import requests
import re
from tkinter import *
root = Tk()
root.title('WordCounter')
root.configure(bg='#2f3136')
root.geometry('700x700')
root.resizable(False, False)
# Buttons
e1 = Entry(root, width='35')
label1 = Label(root, text='Write The Word You Want To Search For', bg='#2f3136', fg='white',)
e2 = Entry(root, width='35')
label2 = Label(root, text='Write the websites URL', bg='#2f3136', fg='white',)
# Define Functions
def searchgo():
word = e1.get()
URL = e2.get()
page = requests.get(URL).text
print(page.find(word))
temp = Button(root, text='GO', command=searchgo)
# Buttons on screen
label1.grid(row='0', column='0',padx='10')
e1.grid(row='1', column='0', padx='10')
label2.grid(row='0', column='1', padx='10')
e2.grid(row='1', column='1', padx='10')
# use the grid manager to place your button
temp.grid(row='1', column='2', padx='10')
root.mainloop()
Я попытался объяснить изменения, которые я сделал с некоторой теорией. Я надеюсь, вы понимаете!