좋아, 내 문제는 내 클래스의 내부 (최상위 레벨)에서 메서드를 호출 할 때 self 매개 변수를 인수로 사용할 때와 같은 것이다. 내 클래스의 값을 원하는 :파이썬 leave()는 정확히 1 인수 (0이 주어진다)
b2 = Button(root, text="Leave", width=8, state=DISABLED, command=Client.leave)
b2.grid(row=0, column=3)
Button(root, text="Connect", width=8, command=Client).grid(row=0, column=4)
그리고 오류 :
Traceback (most recent call last):
File "C:\Python32\chatClient2.py", line 68, in <module>
b2 = Button(root, text="Leave", width=8, state=DISABLED, command=Client.leave)
TypeError: leave() takes exactly 1 argument (0 given)
012,351,641 방법 휴가()를 호출하는 클라이언트 클래스 하나를 호출
class Client:
def __init__(self, host='localhost', port=5000):
try:
self.server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
self.server_socket.connect((host, port))
info.set("Connected...")
self.boool = True
self.gotten = ""
self.data = ""
b1.config(state=NORMAL)
b2.config(state=NORMAL)
textEntry.config(state=NORMAL)
time.sleep(1)
threading.Timer(1.0, self.listen).start()
except socket.error as error:
self.boool = False
info.set(str(error)[14:])
except:
self.boool = False
info.set("An unknown error occured")
def leave(self):
self.boool = False
self.server_socket.close()
b1.config(state=DISABLED)
b2.config(state=DISABLED)
textEntry.config(state=DISABLED)
def listen(self):
while self.boool == True:
time.sleep(0.1)
self.data = self.server_socket.recv(512)
if self.data == bytes('quit', 'UTF-8'):
self.leave()
print("Server has left the chat")
elif self.data != self.gotten:
v.set("Server: %s\n%s" % (self.data, v.get()))
self.gotten = self.data
def send(self, message=''):
self.data.send(bytes(message, 'UTF-8'))
v.set("Client: %s\n%s" % (message, v.get()))
그리고 내 Tkinter를 버튼
. '클래스 클라이언트 :'이후, 그냥 알 수 있습니다. – KnasScripter
'Client.leave'를'Client(). leave'로 대체 할 때 나타나는 에러를 보여줄 수 있습니까? 나는 당신에게 바운드 방법을 제공해야하고 그러므로 일해야한다고 믿는다. – unutbu
당신은 절대적으로 옳다. 이제는 내 문제가 될 것이다. '' 'b2 = Button (root, text = "Leave", width = 8, state = DISABLED, command = Client(). leave) '' '시작시 Client 클래스를 호출합니다.이 클래스는 연결 버튼 만 클릭했을 때 클래스가 호출되도록되어 있지 않습니다. – KnasScripter