Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > Python
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.07.2018, 08:20   #1
dbalor
Форумчанин
 
Аватар для dbalor
 
Регистрация: 06.09.2016
Сообщений: 198
Вопрос Многооконное приложение Tk

Есть главное окно(main.py), по кнопке должно открываться другое окно в модальном режиме(win.py).

Т.е. для каждого окна свой скрипт

Как это реализовать в библиотеке Tkinter?
dbalor вне форума Ответить с цитированием
Старый 03.07.2018, 02:22   #2
Black Fregat
Программист
Участник клуба
 
Аватар для Black Fregat
 
Регистрация: 23.06.2009
Сообщений: 1,772
По умолчанию

https://python-scripts.com/question/7131

Цитата:
При помощи функции grab_set мы передаем поток данному виджету т.е. делаем его модальным(нельзя переключиться на главное окно). При помощи функции focus_set() мы фокусируем наше приложение на окне top, а при помощи функции wait_window() мы задаем приложению команду, что пока не будет закрыто окно top пользоваться другим окном будет нельзя.
Код:
from tkinter import Tk, Toplevel, Button, Label
  
def func():
    top = Toplevel(root)
    button_top_level = Button(top, text='Нажми', command=lambda: label.config(text='Текст из модального окна')).pack()
    top.grab_set()
    top.focus_set()
    top.wait_window()
  
root = Tk()
label = Label(root, text='Текст')
label.pack()
button = Button(root, text='openModal', command=func).pack()
root.mainloop()
Black Fregat вне форума Ответить с цитированием
Старый 03.07.2018, 03:45   #3
dbalor
Форумчанин
 
Аватар для dbalor
 
Регистрация: 06.09.2016
Сообщений: 198
Подмигивание

Спасибо,

но вопрос был немного в другом как для удобства разделить код(на 2 файла с расширением py) :
1 скрипт главный:
Код:
...
from tkinter import Tk, Toplevel, Button, Label
from скрипт import* 
  
root = Tk()
label = Label(root, text='Текст')
label.pack()
button = Button(root, text='openModal', command=func).pack()
root.mainloop()
...
2 скрипт - вызываемое окно:
Код:
...
  
def func():
    top = Toplevel(root)
    button_top_level = Button(top, text='Нажми', command=lambda: label.config(text='Текст из модального окна')).pack()
    top.grab_set()
    top.focus_set()
    top.wait_window()
  
...
dbalor вне форума Ответить с цитированием
Старый 05.07.2018, 12:33   #4
Black Fregat
Программист
Участник клуба
 
Аватар для Black Fregat
 
Регистрация: 23.06.2009
Сообщений: 1,772
По умолчанию

Ну так, например:
modal.py
Код:
from tkinter import Tk, Toplevel, Button, Label
from func import Func  
  
root = Tk()
label = Label(root, text='Текст')
label.pack()
button = Button(root, text='openModal', command=lambda: Func(root,label)).pack()
root.mainloop()
func.py
Код:
from tkinter import Tk, Toplevel, Button, Label

class Func():
  def __init__(self, root, label):
    self.top = Toplevel(root)
    self.button_top_level = Button(self.top, text='Нажми', command=lambda: label.config(text='Текст из модального окна')).pack()
    self.top.grab_set()
    self.top.focus_set()
    self.top.wait_window()
Black Fregat вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Многооконное приложение в Delphi Alexander788 Помощь студентам 4 21.05.2014 14:00
Многооконное приложение из однооконного Ol_Alex C++ Builder 18 21.04.2012 13:02
Многооконное приложение Miha85193 Общие вопросы Delphi 1 03.12.2010 01:49
Задача:в вижуал с++ Разработать приложение-сервер и приложение (смотри дальше сообщение) Мила777 Фриланс 2 21.10.2009 11:05