Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/355.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中使用telnetlib时,不要更改GUI文本_Python_Windows_User Interface_Tkinter_Telnetlib - Fatal编程技术网

为什么可以';在Python中使用telnetlib时,不要更改GUI文本

为什么可以';在Python中使用telnetlib时,不要更改GUI文本,python,windows,user-interface,tkinter,telnetlib,Python,Windows,User Interface,Tkinter,Telnetlib,我正在尝试用Python编写我的第一个程序。这是一个使用telnet远程关机的程序。 当输出设置为console时,代码可以正常工作,但我正在尝试使用tkinter创建一个小接口。按钮和滚动文本框 我无法从shutdownAll()函数内部执行t.insert。流经过它并继续执行tn=telnetlib.Telnet(主机、端口、超时) 但是如果我删除了tn=telnetlib.Telnet(主机、端口、超时),以及所有与Telnet相关的东西,它就可以正常工作了 我错过了什么?谢谢你的耐心 f

我正在尝试用Python编写我的第一个程序。这是一个使用telnet远程关机的程序。 当输出设置为console时,代码可以正常工作,但我正在尝试使用tkinter创建一个小接口。按钮和滚动文本框

我无法从shutdownAll()函数内部执行t.insert。流经过它并继续执行
tn=telnetlib.Telnet(主机、端口、超时)

但是如果我删除了
tn=telnetlib.Telnet(主机、端口、超时)
,以及所有与Telnet相关的东西,它就可以正常工作了

我错过了什么?谢谢你的耐心

from tkinter import *
import csv, telnetlib, socket, sys

def shutdownAll():
    for index,row in enumerate(addressList):
        T.insert(END, "This doesn't work")
        print ('Trying to establish connection with: ' + row[4])
        print ('Host: ' + row[0] + ', Username: ' + row[1] + ', Password: ' + row[2] + ', OS: ' + row[3])
        host = row[0]
        username = row[1]
        password = row[2]
        os = row[3]
        computerName = row[4]

        try :
            tn = telnetlib.Telnet(host,port,timeout)
            tn.read_until(login_prompt, timeout)
            tn.write(username.encode('ascii') + b"\n")

            if password :
                tn.read_until(password_prompt,timeout)
                tn.write(password.encode('ascii') + b"\n")

            print ('Sending shutdown command to: ' + computerName)
            if os == "linux" :
                tn.write("sudo poweroff\n")
            elif os == "windows" :
                tn.write("shutdown /s\n")
            tn.close()

        except socket.timeout :
            print("ERROR! Can't connect")
            T.insert(END, "Inside the shutdown")


#VARIABLES
tn = None
host = "192.192.1.39"
port = 23
timeout = 10
username = "pi"
password = "raspberry"
os = "linux"
computerName = "Test"
login_prompt = b"login: "
password_prompt = b"Password: "
addressList = csv.reader(open('computers.csv', 'r'))


#GUI WINDOW
window = Tk()
window.title("Remote Shutdown utility")
window.geometry("500x500")
btn = Button(window, text="Shutdown all computers now!", command=shutdownAll)
btn.pack()

S = Scrollbar(window)
T = Text(window, height=4, width=50)
S.pack(side=RIGHT, fill=Y)
T.pack(side=LEFT, fill=Y)
S.config(command=T.yview)
T.config(yscrollcommand=S.set)
T.insert(END, "This a test")

window.mainloop()