Связь между двумя (или более) окнами в Python - PullRequest
0 голосов
/ 08 января 2019

Сначала немного контекста: Я сделал диалоговое окно в 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, если нужно изменить, использовать многопоточность, если я должен. Моя самая большая проблема - что искать.

Даже примеры многопоточности похожи на диалоговое окно, в котором я запускаю поток, что-то там происходит, и в конце концов возвращает значение или что-то еще. Но мне нужно окно для изменения другого окна (не обязательно того же объекта).

Идея, похоже, состоит в том, чтобы как-то передать "событие" из одного окна в другое, но я понятия не имею, как вообще его искать и как это сделать.

Большое спасибо за ваше время.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...