2016-12-21 39 views
0

私たちはパテとSSHを介してラズベリーパイに接続しようとしています。 raspberry-piにはPythonプログラムがあり、Tkinterでウィンドウを表示する必要があります。コンピュータがSSHを介してラズベリーパイに接続されていて、コンピュータ上のTkinterウィンドウまたはラズベリーパイを表示できません

ラズベリー-piではなく、ウィンドウがコンピュータに表示されます。

しかし、私たちはSSH経由でプログラムを実行するとウィンドウを表示できません。それはラズベリーパイからプログラムを実行すると、うまく動作し、ウィンドウが表示されます(しかし、ラズベリー-pi上)。私たちはSSHをusin接続したときに

from Tkinter import * 
import RPi.GPIO as GPIO 
import time 

GPIO.setwarnings(False) 
GPIO.setmode(GPIO.BCM) 
GPIO.setup(18, GPIO.OUT) 
GPIO.setup(23, GPIO.OUT) 
GPIO.setup(24, GPIO.OUT) 
GPIO.setup(25, GPIO.OUT) 

class App: 

    def __init__(self, master): 
     frame = Frame(master) 
     frame.pack() 
     self.check_var1 = BooleanVar() 
     check = Checkbutton(frame, text='red', 
       command=self.update1, 
       variable=self.check_var1, onvalue=True, offvalue=False) 
     check.grid(row=1) 


     self.check_var2 = BooleanVar() 
     check = Checkbutton(frame, text='green', 
       command=self.update2, 
       variable=self.check_var2, onvalue=True, offvalue=False) 
     check.grid(row=3) 



     self.check_var3 = BooleanVar() 
     check = Checkbutton(frame, text='blue', 
       command=self.update3, 
       variable=self.check_var3, onvalue=True, offvalue=False) 
     check.grid(row=5) 


     self.check_var4 = BooleanVar() 
     check = Checkbutton(frame, text='red2', 
       command=self.update4, 
       variable=self.check_var4, onvalue=True, offvalue=False) 
     check.grid(row=7) 

    def update1(self): 
     GPIO.output(18, self.check_var1.get()) 

    def update2(self): 
     GPIO.output(23, self.check_var2.get()) 

    def update3(self): 
     GPIO.output(24, self.check_var3.get()) 

    def update4(self): 
     GPIO.output(25, self.check_var4.get()) 

root = Tk() 
root.wm_title('On/Off Switch') 
app = App(root) 
root.geometry("1920x1080+0+0") 
root.mainloop() 

、我々はエラー「表示名なしなし$ DISPLAY環境変数」 を持っていた。しかし、我々が行った: 輸出DISPLAY =

この

は、私たちのプログラムです。 :

> [email protected]:~ $ sudo python gui_switch.py 
No protocol specified 
No protocol specified 
Traceback (most recent call last): 
    File "gui_switch.py", line 88, in <module> 
    root = Tk() 
    File "/usr/lib/python2.7/lib-tk/Tkinter.py", line 1813, in __init__ 
    self.tk = _tkinter.create(screenName, baseName, className, interactive, wantobjects, useTk, sync, use) 
_tkinter.TclError: couldn't connect to display ":0.0" 

このtuto:0.0

、今は、私たちは新しいエラーを持っています私は https://www.raspberrypi.org/forums/viewtopic.php?f=67&t=63637

のssh -Xパイの@ raspberrypしかし、我々はパテを使用してそのように接続する方法がわからない:(下のリンク)リアル、いくつかの-Xで接続することを示唆しています。

+0

'DISPLAY =:0.0'はX11にローカルのUNIXソケットを使用するように指示します。 sshがX11を転送するように設定した場合(ssh -Xまたはパテの場合、sshの下の設定ツリーを展開し、X11/X11転送のチェックボックスをオンにします)、DISPLAYは適切なものに設定されます。しかし、あなたのワークステーションでXサーバを稼働させる必要があります。 Xmingwで十分です。 DISPLAY = localhost:10.0またはポート6010が実際にワークステーションのX11サーバーにトンネリングされている場所に似ているはずです。 (DISPLAY番号はポートマイナス6000です)。 – patthoyts

答えて

3

ssh -Xでは、システム上でX(Xwindows)サーバを実行してsshを実行する必要があります。 PuTTyは、システムがMicrosoft Windowsを実行していることを示しています。 XmingやMobaXtermなどのWindows用の無料のXサーバがあります(後者は無料です)。

関連する問題