繁体   English   中英

制作聊天客户端窗口

[英]Making a chat client window

我将从代码开始

import socket;
from Tkinter import *;

#Initalize tkinter
root = Tk();
App = root;
root.title("Client");
root.configure(bg = "#DEE2E3");
App.geometry("400x450");

#Input
typeBox = Entry(root, text = '');
send = Button(root, text = 'Send', bg = "#A0DEF2", font = ('times', 14, 'bold'));
typeBox.pack(side = BOTTOM, fill = X);
send.pack(side = BOTTOM, fill = X);

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM);
host = 'localhost';
port = 5500;

#connect to server
s.connect((host, port));

#chat
while(True):
    message = raw_input("Message: ");
    s.send(message);
    data = s.recv(1024);
    print(data);

root.mainloop();

我想从条目小部件中获取信息。 然后当点击发送时,我希望它在客户端上显示并发送到服务器。(我已将消息更改为等于typeBox,但随后它将垃圾邮件发送到服务器中。)

while循环永远运行,这就是为什么当你没有raw_input来暂停垃圾邮件时它会发送垃圾邮件。 您需要将该代码放入一个函数(没有while循环),然后可以将该函数指定为按钮的命令。

def cmd_send():
    message = typeBox.get()
    s.send(message)
    data = s.recv(1024)
    print(data)

需要在创建发送按钮之前的某个时间定义此函数。 要将此作为命令添加到按钮,请包含以下选项:

command = cmd_send

所以对于你的按钮,结果将是:

send = Button(root, text = 'Send', bg = "#A0DEF2", font = ('times', 14, 'bold'), command = cmd_send)

并摆脱所有; 在你的行结束;-)

编辑:

添加“文本”小组件以显示您的消息。 由于我没有服务器代码,我只测试了直接插入。 您可以添加以下文本小部件:

output = Text(root, font=('times', 14))
output.pack(side=TOP, fill=X)

这可以插入您制作的相同位置并打包Entry和Button小部件。 然后将cmd_send函数中的print(data)替换为:

output.insert(END, data + "\n")

这将在Text Widget的末尾插入您收到的数据,并添加换行符。 新墨西哥理工学院对Tkinter很好的参考 而且TkDocs也有一些不错的信息。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM