[英]Controlling IP Cameras with Tkinter Buttons (Python)
我一直在嘗試使用 tkinter 創建一個 GUI,以使用 Python 控制 4 個 IP 相機。 起初我以為是因為我沒有正確的 IP 或端口,但我使用了數據包發送器來檢查它。 當我嘗試在 Python 2.7 中使用該程序時,我對為什么該程序不起作用感到困惑。 下面是我的一台攝像機的代碼 - 左攝像機,它是一台 PTZoptics 攝像機。 相機和計算機都通過以太網連接在一個網絡上。 目前,我正在使用 IP 操縱桿控制它們。
import socket
import tkinter as tk
class Example(tk.Frame):
def __init__(self, *args, **kwargs):
tk.Frame.__init__(self, *args, **kwargs)
self.up = tk.Button(self, text="LEFT CAMERA UP")
self.down = tk.Button(self, text="LEFT CAMERA DOWN")
self.left = tk.Button(self, text="LEFT CAMERA LEFT")
self.right = tk.Button(self, text="LEFT CAMERA RIGHT")
self.up.pack(side="top")
self.down.pack(side="bottom")
self.left.pack(side="left")
self.right.pack(side="right")
self.up.bind("<ButtonPress>", self.on_LCup)
self.up.bind("<ButtonRelease>", self.on_LCrelease)
self.down.bind("<ButtonPress>", self.on_LCdown)
self.down.bind("<ButtonRelease>", self.on_LCrelease)
self.left.bind("<ButtonPress>", self.on_LCleft)
self.left.bind("<ButtonRelease>", self.on_LCrelease)
self.right.bind("<ButtonPress>", self.on_LCright)
self.right.bind("<ButtonRelease>", self.on_LCrelease)
def on_LCup(self, event):
LeftHost = '10.30.1.41'
port1 = 5678
LC = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
LC.connect((LeftHost, port1))
LC.send("81 01 06 01 08 08 03 01 FF")
def on_LCdown(self, event):
LeftHost = '10.30.1.41'
port1 = 5678
LC = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
LC.connect((LeftHost, port1))
LC.send("81 01 06 01 08 08 03 02 FF")
def on_LCleft(self, event):
LeftHost = '10.30.1.41'
port1 = 5678
LC = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
LC.connect((LeftHost, port1))
LC.send("81 01 06 01 08 08 01 03 FF")
def on_LCright(self, event):
LeftHost = '10.30.1.41'
port1 = 5678
LC = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
LC.connect((LeftHost, port1))
LC.send("81 01 06 01 08 08 02 03 FF")
def on_LCrelease(self, event):
LeftHost = '10.30.1.41'
port1 = 5678
LC = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
LC.connect((LeftHost, port1))
LC.send("81 01 06 01 08 08 03 03 FF")
if __name__ == "__main__":
root = tk.Tk()
Example(root).pack(side="top", fill="both", expand=True)
root.mainloop()
添加 --> bytes.fromhex 在 LC.send:: LC.send(bytes.fromhex("81 01 06 01 08 08 03 03 FF"))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.