我對編碼相當陌生,大多數時候我在研究如何編寫事物。我很難試圖讓這個標籤更新,我認爲這是因爲我試圖改變StringVar()
在我不能的地方。Python Tkinter StringVar()問題
無論如何,以下是我的代碼,對不起,如果它是醜陋的。我將不勝感激任何建議,但最重要的是,當我更改StringVar()
變量時,需要更新Label(connection_window, textvariable=isconnected).grid(row=3)
。
import socket
import sys
from Tkinter import *
root = Tk()
ip_entry = None
port_entry = None
isconnected = StringVar()
try:
mysock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
except socket.error:
print ("failed to create socket")
sys.exit()
def start_connection_window():
connection_window = Toplevel(root)
global ip_entry
global port_entry
global isconnected
Label(connection_window, text = "Host IP Address:").grid(row=0)
Label(connection_window, text = "Host Port #:").grid(row=1)
ip_entry = Entry(connection_window)
port_entry = Entry(connection_window)
connect_button = Button(connection_window, text="connect", width=15, command=connect)
ip_entry.grid(row=0, column=1)
port_entry.grid(row=1, column=1)
connect_button.grid(row=2, column=0, columnspan=2)
Label(connection_window, textvariable=isconnected).grid(row=3)
def connect():
global ip_address
global port_number
global isconnected
isconnected = "worked"
ip_address = ip_entry.get()
port_number = port_entry.get()
try:
mysock.connect((ip_address,port_number))
print("connected to",ip_address,port_number)
except:
isconnected.set("unable to connect")
open_connection = Button(root, text="Connection setup", width=15, height=3, command=start_connection_window)
Label(root, text = "Jason's Watering System", width=100).grid(row=0,column=0,columnspan=2)
open_connection.grid(row=0, column=2)
"""
mysock.sendall(message)
"""
mysock.close()
root.mainloop()
你不只是修改'isconnected';你將它拋出並將引用綁定到一個完全不同的對象,它實際上是一個字符串(''''')而不是一個'StringVar()'對象(所以'isconnected.set()'應該導致一個錯誤)。除此之外,你可能想看看[追蹤](http://stackoverflow.com/questions/6548837/how-do-i-get-an-event-callback-when-a-tkinter-entry-widget-is -改性)。 – TigerhawkT3