ibr_98
@ibr_98

Как в ткинтере создать окно внутри главного окна?

Всем привет!
Как в ткинтере создать окно внутри главного окна? Если кто-то не понял щас доходчиво объясню, бывают диалоговые окна, которые создаются отдельно от главного, а я хочу, чтобы прям внутри главного создалось это окно, еще один пример, когда бродишь по какому-нибудь сайту, и открываешь ссылки, 1)то некоторые ссылки открывают отдельно новую вкладку, 2)а некоторые открывают новую вкладку в этой же вкладке, а мне нужен второй вариант, тоесть чтобы новое окно открывалось прям главном окне
спасибо
  • Вопрос задан
  • 2026 просмотров
Решения вопроса 1
sergey-gornostaev
@sergey-gornostaev Куратор тега Python
Седой и строгий
import tkinter as tk

root = tk.Tk()
root.title("Main Window")
root.geometry("640x480")

sub = tk.Toplevel(root)
sub.transient(root)
sub.title('Sub Window')
sub.minsize(320, 240)
sub.maxsize(320, 240)

pos = []

def main_move(event):
    if pos:
        sub.geometry("+{0}+{1}".format(pos[0], pos[1]))


def sub_move(event):
    min_w = root.winfo_rootx()
    min_h = root.winfo_rooty()

    max_w = root.winfo_rootx() + root.winfo_width() - 15
    max_h = root.winfo_rooty() + root.winfo_height() - 35

    if event.x < min_w:
        sub.geometry("+{0}+{1}".format(min_w, event.y))

    elif event.y < min_h:
        sub.geometry("+{0}+{1}".format(event.x, min_h))

    elif event.x + event.width > max_w:
        sub.geometry("+{0}+{1}".format(max_w - event.width, event.y))

    elif event.y + event.height > max_h:
        sub.geometry("+{0}+{1}".format(event.x, max_h - event.height))

    global pos
    pos = [event.x, event.y]  


root.bind('<Configure>', main_move)
sub.bind('<Configure>', sub_move)

root.mainloop()
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы