我已经编写了一个基本的基于python套接字的聊天程序(我的第二个),我想添加一些视觉效果,使它更友好一些。你知道吗
我应该在现有的程序上分层视觉效果,还是围绕视觉效果制作一个新程序
我应该使用哪一个python模块来制作视觉效果(我知道pygame是合适的)
我能对如何写这个有一些大概的想法吗(可能是代码示例?)
我的现有代码如下:
Client:
import socket, threading
#Setup The Variables
WindowTitle = 'Chat 2.0 - Client'
s = socket.socket()
host = raw_input("Please Enter External IP adress Here: ")
print
host = socket.gethostname()
port = 8008
#Attempted To Connect
print "Conecting..."
print
while True:
try:
s.connect((host, port))
break
except:
pass
print "Connected To " + str(host) + " " + str(port)
print
#Check For Incomming Data
def check_for_data():
while True:
data = s.recv(1024)
if data:
print
print "Other: " + str(data)
print
print "You: "
else:
print "Client closed connection"
s.close()
break
#Send Data
def send_data():
while True:
user_input = raw_input("You: ")
print
s.sendall(user_input)
#Start Threads \ Main Loop
t = threading.Thread(target=send_data)
t.daemon = True
t.start() #1
check_for_data()
s.close
Server:
import socket, threading
#Setup The Variables
WindowTitle = 'Chat 2.0 - Client'
host = socket.gethostname()
port = 8008
s = socket.socket()
s.bind((host, port))
print "Awaiting Connection..."
print
s.listen(5)
c, addr = s.accept()
print "Connection From: " + str(addr)
print
def check_for_data(c):
while True:
data = c.recv(1024)
if data:
print
print "Other: " + str(data)
print
print "You: "
else:
print "Client closed connection"
c.close()
break
def send_data():
while True:
message = raw_input("You: ")
print
c.sendall(message)
#Start Threads \ Main Loop
t = threading.Thread(target=send_data)
t.daemon = True
t.start() #1
check_for_data(c)
c.close()
我不得不同意,特金特可能是更好的方式来这里。对于聊天程序,pygame的sprites/rects/surfaces都没有什么用处。不过,tkinter有按钮、标签和其他类似的东西,可以更好地满足您的需求。顺便说一句,为了让使用socket的生活更轻松,请查看makefile方法。makefile方法允许更容易地使用。我建议看一下Socket.error [Error 10060]来了解如何使用它及其用法。没必要,只是让生活更轻松:)
编辑: “我应该在现有的程序上分层视觉效果,还是应该围绕视觉效果制作一个新程序”
不太清楚你这里所说的“现有程序”是什么意思。当涉及到你应该编写什么代码时,把你的逻辑和用户界面分开。所以有一个模块处理消息的发送和接收,还有一个模块处理显示。你知道吗
“我应该使用什么python模块来制作视觉效果(我知道pygame是合适的)”
可能是特金特。我只在tkinter和pygame方面有经验,但在这两个方面,你可能需要tkinter。我在第一段解释了原因。你知道吗
“我能对如何写这个有一些大概的想法吗(可能是代码示例?)你知道吗
假设您使用tkinter,查看stringvars,它们可能对您有用,也可能不有用。至于你的课程结构,我不太清楚你想要什么,所以我不能帮你。但要从简单开始。例如,获取要在程序之间发送的消息,并将其打印出来。然后让信息显示在窗口上。。让用户通过GUI输入消息(查看tkinter entry小部件!)。祝你好运!你知道吗
编辑2:回答您关于如何定位按钮的问题。这是我上一个项目的一些代码,我不得不用一个按钮来做一些事情。你知道吗
按钮的位置是根据我做按钮的位置来确定的_框架.grid(....). 要组织tkinter窗口,我建议使用grid而不是pack。你知道吗
哦,还有self.option\u窗口是一个tkinter公司()对象。你知道吗
相关问题 更多 >
编程相关推荐