首先介绍一下上下文: 我在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框架,如果必须的话,请使用多线程。我最大的问题是要搜索什么。
即使是多线程示例,也像在对话框中启动线程一样,那里正在发生某种事情,最终返回一个值或某些东西。 但是我需要的是一个窗口来修改另一个窗口(不一定是同一对象)。
这个想法似乎是要以某种方式将一个“事件”从一个窗口传递到另一个窗口,但我不知道该如何搜索以及如何实现它。
非常感谢您抽出宝贵的时间。