Python中两个(或更多)窗口之间的通信

时间:2019-01-07 22:44:15

标签: python multithreading user-interface events

首先介绍一下上下文: 我在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")
>>> 

It looks like this

它将打开一个带有输入字段和输出标签的窗口,您可以在输入字段中放置一些内容,如果按下显示按钮,则将输入复制到输出中。现在,我使两个对话框同时处于活动状态,如下所示:

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框架,如果必须的话,请使用多线程。我最大的问题是要搜索什么。

即使是多线程示例,也像在对话框中启动线程一样,那里正在发生某种事情,最终返回一个值或某些东西。 但是我需要的是一个窗口来修改另一个窗口(不一定是同一对象)。

这个想法似乎是要以某种方式将一个“事件”从一个窗口传递到另一个窗口,但我不知道该如何搜索以及如何实现它。

非常感谢您抽出宝贵的时间。

0 个答案:

没有答案