我正在嘗試爲學校製作一個簡單的聊天窗口。當我嘗試使用entry.get()函數時,它會給出每次測試代碼時發生更改的錯誤。 下面是腳本:Entry.get()會給出錯誤,每次都會有所不同。無效的命令名稱.55
import socket
import sys
import tkinter
global ready
ready = False
def setready():
global ready
ready = True
window = tkinter.Tk()
window.title("MAGENTA Chat Host v1 - send")
window.geometry("200x100")
window.configure(bg = "magenta")
but = tkinter.Button(window, text = "Send", command = (setready()))
lbl = tkinter.Label(window, bg = "magenta", fg = "snow", text = "Chat")
msgfield = tkinter.Entry(window)
but.pack(side = tkinter.RIGHT)
lbl.pack(side = tkinter.TOP)
msgfield.pack(side = tkinter.LEFT)
message = "Message"
UDP_IP = "127.0.0.1"
try:
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
lbl.config(text = "Socket successfully created")
except socket.error as err:
lbl.config(text = "Socket creation failed with error %s" %(err))
window.mainloop()
while True:
if ready == True:
message = msgfield.get()
if message == "exit":
s.close()
window.destroy()
sys.exit()
else:
s.sendto(bytes(message, "utf-8"),(UDP_IP,5000))
msgfield.select_clear()
ready = False
以下是錯誤:
Traceback (most recent call last):
File "C:\Users\qscguest\Desktop\ChatSend.py", line 33, in <module>
message = msgfield.get()
File "C:\Program Files\Python35\lib\tkinter\__init__.py", line 2522, in get
return self.tk.call(self._w, 'get')
_tkinter.TclError: invalid command name ".55573472"
我怎麼會惹這麼糟糕?我該如何解決?
你有無限的遞歸,因爲在'setready'裏面你正在執行'command = setready()'。你的功能正在調用自己。這不是你想要的。你想把'command'設置到_function本身,而不是函數的返回值:'command = setready'。 –
沒有什麼變化。同樣的錯誤。 –
代碼的縮進不正確,導致無法知道'setready'內的代碼是什麼,什麼不是。 –