Сначала немного контекста:
Я сделал диалоговое окно в Python:
import PySimpleGUI27 as sg
# Sets values from the IN field to OUT label
def dialog(title):
layout = [
[sg.Text('Please enter data')],
[sg.Text('DataIN', size=(15, 1)), sg.InputText('', key='_IN_')],
[sg.Text('DataOUT', size=(15, 1)), sg.Text('', key='_OUT_',size=(20,1))],
[sg.Button('Show'), sg.Button('Quit')]
]
window = sg.Window(title).Layout(layout)
while True: # Event Loop
event, values = window.Read()
#print(event, values)
if event is None or event == 'Quit':
break
if event == 'Show':
# change the "output" element to be the value of "input" element
window.FindElement('_OUT_').Update(values['_IN_'])
window.Close()
(я сохранил его как dialog1.py)
если вы активируете диалоговое окно следующим образом:
$ python
Python 2.7.12 (default, Nov 12 2018, 14:36:49)
[GCC 5.4.0 20160609] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import dialog1 as d1
>>> d1.dialog("Dialog1")
>>>
Это выглядит так
открывает окно с полем ввода и меткой вывода, вы помещаете что-то в поле ввода и, если нажата кнопка показа, ввод копируется в вывод. Теперь я сделал так, чтобы два диалоговых окна были активны одновременно, например:
import os
import dialog1 as d1
def multi():
newpid = os.fork()
if newpid == 0:
d1.dialog("Dialog1")
else:
d1.dialog("Dialog2")
multi()
Теперь у меня есть два окна, которые независимо делают это (копирует поле ввода в поле вывода).
Хорошо, пока хорошо.
Но мне нужно, чтобы, если я поместил вход из окна 1, его нужно было скопировать в выходной файл в окно 2 и наоборот.
Это большая проблема для меня, я даже не знаю, как поставить вопрос на Google для этого. Я не хочу какой-то реализации клиент-сервер, я хочу как-то получить доступ к одному окну из другого.
Я открыт, чтобы изменить структуру GUI, если нужно изменить, использовать многопоточность, если я должен. Моя самая большая проблема - что искать.
Даже примеры многопоточности похожи на диалоговое окно, в котором я запускаю поток, что-то там происходит, и в конце концов возвращает значение или что-то еще.
Но мне нужно окно для изменения другого окна (не обязательно того же объекта).
Идея, похоже, состоит в том, чтобы как-то передать "событие" из одного окна в другое, но я понятия не имею, как вообще его искать и как это сделать.
Большое спасибо за ваше время.