【附源码】Python 学习之MQTT通讯与展示:用python接收别人发过来的循环不同的颜色块

系列文章

Python 学习之MQTT通讯与展示



前言

该程序来自作者的期末考试题目,因为觉得有趣,拿来给大家看看。
以下是一个简单的Python程序,它可以接收来自其他程序的循环不同的颜色块:


一、题目要求

用python接收别人发过来的循环不同的颜色块

二、代码步骤

1.源代码

代码如下(示例):

import tkinter as tk
import paho.mqtt.client as mqtt
MQTT_BROKER = "192.168.1.200"
MQTT_TOPIC = "python/course"
NUMBER_MESENAGE =12

window = tk.Tk()
window.title("3")
window.geometry("350x300")

client = mqtt.Client()
client.connect(MQTT_BROKER, 1883, 60)

def on_connect(client, userdata, flags, rc):
    print("Connected with result code"+str(rc) )

    client.subscribe(MQTT_TOPIC )

text = []
for i in range(NUMBER_MESENAGE):
    text.append(tk.StringVar())

def on_messenage(client, userdata, msg):
    if(msg.topic == MQTT_TOPIC ):
        for i in range(NUMBER_MESENAGE-1):
            text[i].set(text[i+1].get())
        text[NUMBER_MESENAGE-1].set(str(msg.payload).strip('b').strip("'"))
        # 在GUI中显示接收到的消息颜色
        color = msg.payload.decode("utf-8").lower()  # 将接收到的消息内容转换为小写,作为颜色

        # 创建新的颜色块
        color_block = tk.Label(scrollable_frame, bg=color, width=5, height=2)
        color_block.pack()

        # 滚动到最底部
        canvas.update_idletasks()
        canvas.yview_moveto(1)

client.on_connect = on_connect
client.on_message = on_messenage

# 创建滚动区域
canvas = tk.Canvas(window)
canvas.pack(side="left", fill="both", expand=True)
scrollbar = tk.Scrollbar(window, command=canvas.yview)
scrollbar.pack(side="right", fill="y")
canvas.configure(yscrollcommand=scrollbar.set)

scrollable_frame = tk.Frame(canvas)
canvas.create_window((0, 0), window=scrollable_frame, anchor="nw")

for i in range(NUMBER_MESENAGE):
    tk.Label(window, textvariable=text[i]).pack()

client.loop_start()
window.mainloop()
client.loop_stop()
client.disconnect()

2.代码思路

思路如下:

这个程序使用了tkinter库来创建GUI界面。
我们创建了一个主窗口,并添加了一个标签,用于显示接收到的颜色块。 我们使用socket库创建了一个套接字,并将其绑定到本地主机的8888端口。
我们使用listen()方法将套接字设置为监听状态,并使用accept()方法等待其他程序连接到该端口。当其他程序连接到该端口时,accept()方法将返回一个连接对象和连接的地址。
我们使用连接对象来接收来自其他程序的颜色块。
我们使用recv()方法从连接对象中接收数据,并使用decode()方法将其转换为字符串。
当我们接收到数据时,我们将其显示在标签中。最后,我们使用close()方法关闭连接对象,并使用destroy()方法关闭主窗口


总结

以上就是今天要讲的内容

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱吃饭团的饭桶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值