Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 计算机通过SSH连接到raspberry pi,can';在电脑或树莓皮上不显示Tkinter窗口_Python_Ssh_Tkinter_Raspberry Pi_Raspbian - Fatal编程技术网

Python 计算机通过SSH连接到raspberry pi,can';在电脑或树莓皮上不显示Tkinter窗口

Python 计算机通过SSH连接到raspberry pi,can';在电脑或树莓皮上不显示Tkinter窗口,python,ssh,tkinter,raspberry-pi,raspbian,Python,Ssh,Tkinter,Raspberry Pi,Raspbian,我们正试图通过putty和SSH连接到一个树莓pi。 在raspberry pi上,我们有一个python程序,它应该显示一个带有Tkinter的窗口 我们希望窗口显示在计算机上,而不是树莓皮 但是,当我们通过SSH运行程序时,无法显示任何窗口。如果我们从raspberry pi运行程序,它工作得很好,窗口也会显示出来(但是在raspberry pi上) 这是我们的节目: from Tkinter import * import RPi.GPIO as GPIO import time GPI

我们正试图通过putty和SSH连接到一个树莓pi。 在raspberry pi上,我们有一个python程序,它应该显示一个带有Tkinter的窗口

我们希望窗口显示在计算机上,而不是树莓皮

但是,当我们通过SSH运行程序时,无法显示任何窗口。如果我们从raspberry pi运行程序,它工作得很好,窗口也会显示出来(但是在raspberry pi上)

这是我们的节目:

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()
当我们在SSH中连接USI时,通常会出现错误“没有显示名称和$display环境变量” 但后来我们做到了: 导出显示=:0.0

现在我们有一个新的错误:

> pi@raspberrypi:~ $ 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"
>pi@raspberrypi:~$sudo python gui\u switch.py
没有指定协议
没有指定协议
回溯(最近一次呼叫最后一次):
文件“gui_switch.py”,第88行,在
root=Tk()
文件“/usr/lib/python2.7/lib-tk/Tkinter.py”,第1813行,在__
self.tk=\u tkinter.create(屏幕名、基本名、类名、交互、wantobjects、useTk、同步、使用)
_tkinter.TclError:无法连接到显示器:0.0
本教程(以下链接)建议使用一些-X: ssh-Xpi@raspberrypi


但是我们不知道如何使用putty进行那样的连接。

要使ssh-X有意义,您必须在使用ssh的系统上运行X(Xwindows)服务器。提到PuTTy,系统正在运行Microsoft Windows。所有这些都没有丢失:有免费的X-servers用于Windows,比如Xming和MobaXterm(后者只供个人使用)

要使ssh-X有意义,您必须在您正在使用ssh的系统上运行一个X(Xwindows)服务器。提到PuTTy表明系统正在运行Microsoft Windows。所有这些都没有丢失:有免费的X-servers用于Windows,比如Xming和MobaXterm(后者只供个人使用)

DISPLAY=:0.0
告诉X11使用本地unix套接字。如果将ssh配置为转发X11(ssh-X或putty中,展开ssh下的配置树,并勾选X11/启用X11转发的复选框),则显示将设置为适当的值。不过,您需要在工作站上运行X服务器。Xmingw就足够了。您应该以DISPLAY=localhost:10.0或类似的方式结束,其中端口6010实际上被隧道传输回工作站的X11服务器。(显示号是端口减去6000)。
DISPLAY=:0.0
告诉X11使用本地unix套接字。如果将ssh配置为转发X11(ssh-X或putty中,展开ssh下的配置树,并勾选X11/启用X11转发的复选框),则显示将设置为适当的值。不过,您需要在工作站上运行X服务器。Xmingw就足够了。您应该以DISPLAY=localhost:10.0或类似的方式结束,其中端口6010实际上被隧道传输回工作站的X11服务器。(显示编号为端口号减去6000)。