Не нашёл стандартного диалога “О приложении” в Tkinter, может быть и плохо искал, но то такое.
В общем написал свой класс AboutBox.
Это файл класса classAbout.py:
При этом основной файл приложения tk-AboutBox.py:
Результат:
В общем написал свой класс AboutBox.
Это файл класса classAbout.py:
Python:
from tkinter import*
from PIL import Image, ImageTk
import itertools
import webbrowser
#__author__ = Z.I.L.(З.И.Л.)
class AboutBox(Toplevel):
def __init__(self, parent, data_about):
super().__init__(parent)
self.title('About') # название окна напишите своё
self.geometry('350x250')
self.resizable(False, False)
adress = data_about[0] # распаковываем данные
file_path = data_about[1]
link = data_about[2]
author_text = data_about[3]
license_text = data_about[4]
def toggle1():
func = next(toggle_funcs1) # переключатель для кнопки Авторы
func(label_author)
def toggle2():
func = next(toggle_funcs2) # переключатель для кнопки Лицензии
func(label_license)
def animate_forward(label_author): # анимация подъёма
counter=250
def count():
nonlocal counter
counter -= 1
if counter ==121:
return
else:
label_author.config(label_author.place(x=0, y=counter))
label_author.after(25, count)
count()
def animate_back(label_author): # анимация сворачивания
counter=121
def count():
nonlocal counter
counter += 1
if counter ==250:
return
else:
label_author.config(label_author.place(x=0, y=counter))
label_author.after(25, count)
count()
def callback(event):
if adress == "" or None:
return
else:
webbrowser.open_new(adress) # адрес сайта приложения: adress="http(s)://www.%S.%S"
picture = Image.open(file_path) # путь к файлу изображения: file_path="/path/to/filename"
pict = picture.resize((52,52), Image.ANTIALIAS)
img = ImageTk.PhotoImage(pict)
label_img = Label(self, fg = '#FFDEAD', image = img)
label_img.image = img
label_img.place(x=149, y=10, width=52, height=52)
label_link = Label(self, text=link, anchor=CENTER, font="Verdana 10 underline", fg="#87CEEB", cursor="hand2")
label_link.configure(underline = 1) # имя сайта приложения/ссылка: link="%S.%S"
label_link.bind("<Button-1>", callback)
label_link.place(x=75, y=75, width=200, height=30)
label_author = Label(self, text = author_text, # author_text="%S"
anchor = N)
label_author.place(x=0, y=250, width=350, height=100)
toggle_funcs1 = itertools.cycle((animate_forward, animate_back))
label_license = Label(self, text = license_text, #license_text="%S"
anchor = N)
label_license.place(x=0, y=250, width=350, height=100)
toggle_funcs2 = itertools.cycle((animate_forward, animate_back))
btn_author = Button(self, text = 'Авторы', command = toggle1)
btn_author.place(x=15, y=220)
btn_license = Button(self, text = 'Лицензии', command = toggle2)
btn_license.place(x=123, y=220)
btn_close = Button(self, text = 'Закрыть')
btn_close.place(x=247, y=220)
btn_close.bind('<Button-1>', lambda event: self.destroy())
Python:
#!/usr/bin/python3
# -*- coding: utf-8 -*-
from tkinter import*
from classAbout import AboutBox
class App(Tk):
def __init__(self):
super().__init__()
main_menu = Menu(self)
self.config(menu=main_menu)
info_menu = Menu(main_menu, tearoff=0)
main_menu.add_cascade(label = 'Инфо', menu=info_menu)
info_menu.add_command(label = 'О программе', command = self.open_aboutbox)
def open_aboutbox(self):
adress = r"" # или адрес или "", перед кавычками поставьте r
file_path = "python.png" # замените на путь к своему файлу изображения, если нет файла -""
link = "google.com" # ссылка на сайт приложения, если сайта нет оставьте пустые кавычки
author_text = "Авторы: Уася Пупкен, Куся Мусин, Муся Кусин." # сюда вписывайте авторов приложения
license_text = "Свободное распространение" # а сюда лицензию под которой выходит приложение
self.data_about =(adress,file_path,link,author_text,license_text)
about = AboutBox(self, self.data_about)
about.grab_set()
if __name__ == "__main__": # проверка импортируемый файл или нет
app = App()
app.mainloop()
Результат:
Последнее редактирование: