Python Tkinter StringVar()问题

问题描述 投票:0回答:1

我对编码很新,而且我正在研究的大部分时间都在研究如何写东西。我很难过尝试让这个标签更新,我认为这是因为我试图在一个我无法改变的地方改变StringVar()

无论如何以下是我的代码,对不起,如果它是丑陋的。我会很感激任何建议,但最重要的是,当我更改Label(connection_window, textvariable=isconnected).grid(row=3)变量时,我需要更新StringVar()

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()
python tkinter
1个回答
1
投票

首先,通过输入isconnected = "worked",你将isconnected重新绑定到除了你将它设置在顶部的StringVar以外的东西。那将是一个问题。你可能意味着像isconnected.set("worked")

第二,类似的东西

mylabel = Label(connection_window, textvariable=isconnected)
mylabel.grid(row=3)
isconnected.trace("w", mylabel.update) # w = "changed"

只要stringvar被更改,标签就会更新。

© www.soinside.com 2019 - 2024. All rights reserved.