Es gibt viele viele Möglichkeiten. Das erste, was mir einfällt, ist eine Named Pipe (alias Fifo). Hier ist der Python-Code (Ich gehe davon aus python3 aufgrund Ihres tkinter Import obwohl Ihr shebang für python2 ist):
#!/usr/bin/env python3
import tkinter as tk
import os
import stat
from threading import Thread
class FIFO(Thread):
def __init__(self, pipename, func):
self.pipename = pipename
if pipename in os.listdir('.'):
if not stat.S_ISFIFO(os.stat(self.pipename).st_mode):
raise ValueError("file exists but is not a pipe")
else:
os.mkfifo(pipename)
Thread.__init__(self)
self.func = func
self.daemon = True
self.start()
def run(self):
while True:
with open(self.pipename) as f: # blocks
self.func(f.read())
def close(self):
os.remove(self.pipename)
root = tk.Tk()
var = tk.StringVar(value='Libre')
# pipes the content of the named pipe "signal" to the function "var.set"
pipe = FIFO("signal", var.set)
l = tk.Label(root, textvariable=var)
l.pack(fill=tk.BOTH, expand=True)
root.geometry("200x100")
root.mainloop()
pipe.close()
dieses Beispiel wird ein Rohr namens „Signal“, so alles, was Sie schreiben, dass Rohr gesetzt wird in der Variable. Zum Beispiel wenn Sie öffnen ein neues Terminal im selben Ordner und
echo I am a cucumber > signal
Dann wird das Etikett in den tkinter Fenster Änderungen geben an: „Ich bin eine Gurke“.
Sie können dies auch Zugriff aus anderen Programmen oder Programmiersprache. Zum Beispiel, wenn Sie wollen Daten von einem anderen Python-Programm senden:
with open('signal', 'w') as f:
f.write('I am a banana')
Named Pipes ist entworfen, um viele Programme zu erlauben, sie zu schreiben, aber nur ein Programm sollte die Daten ausgelesen.
Wenn Sie google „Interprozess-Kommunikation“ Sie viele Möglichkeiten für Programme miteinander kommunizieren finden. Sockets oder dbus ist wahrscheinlich am häufigsten. – Novel