空字典发送到

2024-09-29 00:14:08 发布

您现在位置:Python中文网/ 问答频道 /正文

我目前有代码发送数据通过一个套接字,它是工作的,除了字典我送过去没有在它。我在这段代码里做错什么了吗

class ChessBoard(tk.Frame):
    def __init__(self, parent, rows=8, columns=8, size=70, color1="White", color2="lightgrey"):

        self.rows = rows
        self.columns = columns
        self.size = size
        self.color1 = color1
        self.color2 = color2
        self.pieces = {}
        tk.Frame.__init__(self, parent)
        self.canvas = tk.Canvas(self, borderwidth=0, highlightthickness=0,
                            width=canvas_width, height=canvas_height, background="bisque")
        self.canvas.pack(side="top", fill="both", expand=True, padx=2, pady=2)
        color = self.color2

        for row in range(self.rows):
               color = self.color1 if color == self.color2 else self.color2
               for col in range(self.columns):
                  x1 = (col * self.size)
                  y1 = (row * self.size)
                  x2 = x1 + self.size
                  y2 = y1 + self.size
                  self.canvas.create_rectangle(x1, y1, x2, y2, outline="black", fill=color, tags="square")
                  color = self.color1 if color == self.color2 else self.color2


def addpiece(self):

        self.canvas.WhiteKing = tk.PhotoImage(file = 'E:\\Final Project + Report\\Pieces\\WhiteKing.png')
        self.canvas.create_image(0,0, image=self.canvas.WhiteKing, tags="WhiteKing", anchor="c")
        self.placepiece("WhiteKing", row = 7, column = 4)

        self.canvas.WhiteQueen = tk.PhotoImage(file = 'E:\\Final Project + Report\\Pieces\\WhiteQueen.png')
        self.canvas.create_image(0,0, image=self.canvas.WhiteQueen, tags="WhiteQueen", anchor="c")
        self.placepiece("WhiteQueen", row = 7, column = 3) ######


def placepiece(self, name, row, column):
        self.pieces[name] = (row, column)
        x0 = (column * self.size) + int(self.size/2)
        y0 = (row * self.size) + int(self.size/2)
        self.canvas.coords(name, x0, y0)

if __name__ == "__main__":
    root = tk.Tk()                                                                     
    board = ChessBoard(root)
    board.pack(side="top", fill="both", expand="true", padx=4, pady=4)
    board.addpiece()
    root.mainloop()

这是我的密码:

        serverName = '127.0.0.1'
        serverPort = 8000
        root = tk.Tk()
        a = Final_Chess_Game.ChessBoard(root)
        serializedDict = json.dumps(a.pieces)
        self.sock.sendto(serializedDict.encode(),(serverName,serverPort))
        print(serializedDict)

所以我从另一个文件导入一个字典,这个文件包含了程序运行时的所有片段

以下是我收到的图片:

sent data

received data


Tags: columnsimageselfsizecolumnroottkrows
1条回答
网友
1楼 · 发布于 2024-09-29 00:14:08

嗯,你可能不喜欢这个答案,但它收到的是一本空字典,因为你正在发送一本空字典!代码按预期运行,问题是a.pieces为空或是序列化为空字典的数据结构。如果你发布更多的代码,也许我们可以帮助进一步诊断。从目前的情况看,有点难说

只是为了好玩,试试这个

serverName = '127.0.0.1'
serverPort = 8000
root = tk.Tk()
a = Final_Chess_Game.ChessBoard(root)
a.addpiece()
serializedDict = json.dumps(a.pieces)
self.sock.sendto(serializedDict.encode(),(serverName,serverPort))
print(serializedDict)

相关问题 更多 >