При разработке интерфейсов на Tkinter обнаружил что в нём нет стандартного AboutBox.
После недолгих мучений получилось то что вы видите на заглавной картинке.
Работает вот так:
Код class About:
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())
В основном файле пропишите:
#!/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()
Кому нужно -- пользуйтесь на здоровье.
Комментарии
Чёта спойлеры не сворачиваются.
Если админы решат что не по теме ресурса -- сносите нахрен без сожаления.
Ох ты ж...!!! Кто бы подумал, что такие люди таким занимаются! Респект!!!
ну ок, но без милтopга и класса биохолодильник (полиморфирующего) - нищетоба )))
Осталось сайт на питончике выложить.
Почему на питончике?
Можно и на PHP. Оно и проще так.
Tk сильно постарше, чем "стандартность" AboutBox.
Ну и фиксированное положение виджетов - не то, к чему надо стремиться.
А где ты увидел фиксированность?
Это у тебя глюки.
Пользуйся pack() и будет тебе "резиновость" в полный рост.
Ну и насчёт постарше -- эт тебя мотануло куда то не туда.
Ты всерьёз думаешь что WX и GTK -- моложе?
Типа это мне почудилось? :)
И да, wx и gtk моложе. Tk нынче практически не развивается. Последнему стабильному мажорному релизу больше 10 лет.
Ыыыы -- ты не отдупляешь зачем это было сделано?
Ну тогда кто дебе дохтур?
Без обид -- иногда сам сижу над кодом и туплю каг последний пенгуин. Через полчаса сам удивляешься -- нихренасе я затупил.
Почему нет стандартного?
А вот это: https://docs.python.org/3/library/tkinter.messagebox.html
А, понял, это про MessageBox. Пишите лучше сразу на Tcl/Tk ) Очень уважаю этот язык.