Python:带有Tkinter GUI的套接字
这里有一个新的python编码器。 我正在尝试制作一个游戏,其中数字上有一个5x5的网格,当我点击其中一个时,它们会被一个十字“X”取代,并变灰。代码如下:Python:带有Tkinter GUI的套接字,python,sockets,tkinter,Python,Sockets,Tkinter,这里有一个新的python编码器。 我正在尝试制作一个游戏,其中数字上有一个5x5的网格,当我点击其中一个时,它们会被一个十字“X”取代,并变灰。代码如下: import tkinter as tk from tkinter import * from tkinter import messagebox import random import socket removed_numbers=[] def numberClick(num,btn): messagebox.show
import tkinter as tk
from tkinter import *
from tkinter import messagebox
import random
import socket
removed_numbers=[]
def numberClick(num,btn):
messagebox.showinfo('Message',str(num)+' is removed')
removed_numbers.append(num)
btn.configure(text='X')
btn.configure(bg='red',fg='white')
btn.configure(state="disabled")
print(removed_numbers)
root = Tk()
#root.geometry("200x200")
w = Label(root, text='Welcome to Bingo!')
linear_array = [i for i in range(1,26)]
random_array = []
for i in range(1,26):
temp = random.choice(linear_array)
linear_array.remove(temp)
random_array.append(temp)
rows=5
columns=5
btns = [[None for i in range(rows)] for j in range(columns)]
for i in range(rows):
for j in range(columns):
num = random.choice(random_array)
random_array.remove(num)
btns[i][j]=Button(root, text = num , fg ='red',height = 3, width = 5)
btns[i][j]['command']=lambda btn=btns[i][j],num=num: numberClick(num,btn)
btns[i][j].grid(row=i,column=j)
#text1=Text(root,width=47,height=1,bg='grey')
#text1.grid(row=5,column=2)
root.mainloop()
此处输出:
现在我想创建一个服务器,其中两个具有上面相同代码的客户端连接,当在一个客户端中按下一个按钮时,该操作也会反映在另一个客户端中。我尝试将客户端与服务器连接,如图所示:
Server.py:
import socket
c1 = None #Client socket1
addr1 = None #Client address1
c2 = None #Client socket2
addr2 = None #Client address2
server_socket1 = socket.socket() #by default it is SOCK_STREAM (TCP) and has porotocal AF_INET (IPv4)
server_socket1.bind(('127.0.0.1',9999)) #server machine's ip and port on which it will send and recieve connections from
server_socket1.listen(2) #We will only accept two connections as of now , one for each client
print("Server started successfully!!!")
print("Waiting for connections...\n\n")
flag_client1 = '0'
flag_client2 = '0'
while (((c1 is None)and(addr1 is None)) and ((c2 is None) and (addr2 is None))):
if((c1 is None) and (addr1 is None)):
c1,addr1 = server_socket1.accept()
print("User connected to client1 socket!!")
flag_client1='1'
if((c2 is None) and (addr2 is None)):
c2,addr2 = server_socket1.accept()
print("\n\nUser connected to client2 socket!!")
flag_client2='1'
if(flag_client1=='1' and flag_client2=='1'):
c1.send(bytes(flag_client1,"utf-8"))
c1.send(bytes(flag_client2,"utf-8"))
c2.send(bytes(flag_client1,"utf-8"))
c2.send(bytes(flag_client2,"utf-8"))
while True:
msg = c1.recv(4096)
if(msg!=None):
msg = msg.decode()
c2.send(bytes(msg,"utf-8"))
msg2 = c2.recv(4096)
if(msg2!=None):
msg2 = msg2.decode()
c1.send(bytes(msg2,"utf-8"))
Client.py:
#Connection Part
client_socket = socket.socket() #by default it is SOCK_STREAM (TCP) and has porotocal AF_INET (IPv4)
client_socket.connect(('127.0.0.1',9999)) #server machine's ip and port on which it will send and recieve connections from
但连接并没有反映在服务器中。我知道我错了。
有人能指导我如何完成上述任务吗?烧瓶和袜子也能这样吗?这会比tkinter容易吗?我真的需要为我的大学项目做这件事。短暂性脑缺血发作