gpt4 book ai didi

grid - Python/Tkinter 如何更新网格中的信息

转载 作者:行者123 更新时间:2023-12-04 13:53:38 26 4
gpt4 key购买 nike

我正在运行 Python 3.2.2 并编写一些代码来测试套接字。为了方便测试,我使用 Tkinter 来添加一个 GUI 界面。我还没有弄清楚如何更新我正在使用的网格中的信息。我想在以下代码中更新函数“change1”和“change3”中的“host2”和“port2”:

import socket
from tkinter import *
import tkinter.simpledialog

root = Tk()
root.title("Server")
root.iconbitmap("etc.ico")
root.geometry("350x100+200+200")
frame = Frame(root)
host1 = Label(frame,text="Host: ").grid(row=0,column=0)
port1 = Label(frame,text="Port: ").grid(row=1,column=0)
HOST = 'localhost'
PORT = 11111
STATUS = 'EMPTY'
host2 = Label(frame,text=HOST,width=10).grid(row=0,column=1)
port2 = Label(frame,text=PORT,width=10).grid(row=1,column=1)
status1 = Label(root,text=STATUS)
status1.pack(side=RIGHT,padx=2,pady=2)

def change1():
global HOST
HOST= tkinter.simpledialog.askstring(title="Host",prompt="Enter the IP of the Host.")
host2.grid_forget()
def change3():
global PORT
PORT= tkinter.simpledialog.askinteger(title="Port",prompt="Enter the Port of the IP.")
port2.grid_forget()
def go1():
global HOST
global PORT
home = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
home.bind((HOST, PORT))
home.listen(1)
conn, addr = home.accept()
print (addr)
while 1:
data = conn.recv(1024)
if not data: break
global STATUS
STATUS = data.decode('UTF-8')
conn.send(bytes('Received "Hello World"','UTF-8'))
conn.close()
global status1
status1.pack_forget()
status1.pack(side=RIGHT,padx=2,pady=2)

change = Button(frame, text="Change Host", width=10,command=change1).grid(row=0,column=2)
change2 = Button(frame, text="Change Port", width=10,command=change3).grid(row=1,column=2)
go = Button(frame, text="GO!",command=go1,width =10).grid(row=2,column=2)
frame.pack(side=LEFT)

mainloop()

任何有关此事的帮助将不胜感激!谢谢!

最佳答案

首先,在深入解决这个问题之前。我想强调几点。在这一行。

host2 = Label(frame,text=HOST,width=10).grid(row=0,column=1)

我希望您将网格部分与变量的声明分开。因为它将创建一个您无法使用的 No Type 对象。它会在 future 产生许多问题,可能会花费你很多时间。如果您有任何像这样结构的变量,而不仅仅是用作文本行。将该变量的结构更改为我上面描述的结构。无论如何,回到你所说的但更深入的是改变标签的文本。如果要通过函数更改它,我会做什么是在您想要更改标签文本的那个函数中。放入这样的行。
host2['text'] = 'Your New Text'
port2['text'] = 'Your New Text'

# or

host2.configure(text = 'Your New Text')
port2.configure(text = 'Your New Text')

这会将标签的文本更改为新更改的文本,或者换句话说,将文本替换为新文本。

关于grid - Python/Tkinter 如何更新网格中的信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8829751/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com