Tkinter — это стандартная библиотека Python для создания графических интерфейсов пользователя (GUI). Она предоставляет простой и удобный способ создания оконных приложений. В этой статье мы рассмотрим базовые шаги для создания простой программы на Tkinter.
Tkinter входит в стандартную библиотеку Python, поэтому для большинства современных версий Python его установка не требуется. Однако, если у вас возникают проблемы с использованием Tkinter, убедитесь, что у вас установлена библиотека python-tk:
pip install tkhtmlview requests
Чтобы начать работу с Tkinter, нужно импортировать библиотеку и создать главное окно приложения. Вот пример:
from tkinter import *
from tkinter import messagebox as mb
from tkhtmlview import HTMLLabel
import socket, requests, os
current_dir = os.getcwd() + os.sep
def geodata(ip=''):
if ip:
public_ip = '/' + ip
else:
public_ip = ''
r = requests.get(f'http://ip-api.com/json{public_ip}?fields=66846719&lang=ru')
return r.json()
def action():
value = entry.get()
try:
socket.inet_aton(value)
is_ip = True
except:
is_ip = False
if value and not is_ip:
value = socket.gethostbyname(value)
data = geodata(value)
output = f'''<div style="font-size:12px;color:#fff">
<b>Континент:</b> {data['continent']} [{data['continentCode']}]<br>
<b>Страна:</b> {data['country']} [{data['countryCode']}]<br>
<b>Область:</b> {data['regionName']}<br>
<b>Город:</b> {data['city']}<br>
<b>IP:</b> {data['query']}<br>
<b>Широта:</b> {data['lat']}<br>
<b>Долгота:</b> {data['lon']}<br>
<b>Часовой пояс:</b> {data['timezone']}<br>
<b>Валюта:</b> {data['currency']}<br>
<b>Поставщик:</b> {data['as']} [{data['asname']}]
</div>'''
html_label = HTMLLabel(window, html=output, background='#34495e')
html_label.place(x=20,y=135,width=400,height=220)
bg_color = '#ecf0f1'
window = Tk()
window.title('Геодата')
window.iconbitmap(current_dir + 'icon.ico')
window.configure(background=bg_color)
window.resizable(False, False)
# Центрировать окно
width = 440
height = 375
screen_width = window.winfo_screenwidth()
screen_height = window.winfo_screenheight()
x_cordinate = int((screen_width/2) - (width/2))
y_cordinate = int((screen_height/2) - (height/2))
window.geometry("{}x{}+{}+{}".format(width, height, x_cordinate, y_cordinate))
label = Label(window,
font='Tahoma 12 bold',
bg=bg_color,
fg='#000000',
text="IP-адрес или домен"
)
label.place(x=14,y=15,width=180,height=25)
entry = Entry(window,
background='#ffffff',
foreground='#000000',
font='Tahoma 12'
)
entry.insert(0, 'google.ru')
entry.place(x=20,y=47,width=300,height=30)
def hover_btn_enter(e):
button['background'] = '#3498db'
def hover_btn_leave(e):
button['background'] = '#2980b9'
button = Button(window,
font='Tahoma 12',
activebackground='#9b59b6',
activeforeground='#ffffff',
background='#2980b9',
foreground='#ffffff',
borderwidth='0px',
cursor='hand2',
text='Получить',
command=action,
)
button.place(x=20,y=90,width=90,height=30)
button.bind("<Enter>", hover_btn_enter)
button.bind("<Leave>", hover_btn_leave)
html_label = HTMLLabel(window, html='<div style="font-size:12px;color:#fff">Результат...</div>', background='#34495e')
html_label.place(x=20,y=135,width=400,height=220)
window.mainloop()
*текст*
- жирный,
~текст~
- курсивный,
-текст-
- _текст_
- подчеркнутый