我正在尝试同时移动两个伺服系统。但是我动不了。因为第二个电机在完成我在 tkinter 规模上命令的第一个电机运动后移动。我已经从多进程导入 Process 并尝试过。当我将 scale 命令从 更改command=self.update
为 时,command=Process(target=update, args()).start
它给了我NameError: name 'update' is not defined
。
我不知道我应该怎么做,所以任何帮助都将不胜感激。
我的工作(非同时)代码如下。
#!/usr/bin/env python
#-*- coding: utf-8 -*-
from Tkinter import *
import pigpio
import time
servos = 4-5 #GPIO number
pi = pigpio.pi()
horz = int(500)
vert = int(650)
pi.set_servo_pulsewidth(5, 500)
pi.set_servo_pulsewidth(4, 650)
try:
class App:
def __init__(self, master):
frame = Frame(master)
frame.pack()
scale = Scale(frame, from_=2500, to=500,
orient=HORIZONTAL, command=self.update)
scale.grid(row=0)
scale = Scale(frame, from_=650, to=2000,
orient=VERTICAL, command=self.update2)
scale.grid(row=10)
def update(self, angle_yat):
global horz
a = int(angle_yat)
if horz <= a:
for i in range(horz, a, 20):
pi.set_servo_pulsewidth(5, i)
print "yatay ai: ", i
time.sleep(0.001)
horz = a
else:
for i in range(horz, a, -20):
pi.set_servo_pulsewidth(5, i)
print "yatay ai: ", i
time.sleep(0.001)
horz = a
def update2(self, angle):
global vert
b = int(angle)
if vert <= b:
for i in range(vert, b, 20):
pi.set_servo_pulsewidth(4, i)
print "yatay ai: ", i
time.sleep(0.001)
vert = b
else:
for i in range(vert, b, -20):
pi.set_servo_pulsewidth(4, i)
print "dikey ai: ", i
time.sleep(0.001)
vert = b
root = Tk()
root.wm_title('Servo Control')
app = App(root)
root.geometry("200x150+0+0")
root.mainloop()
except KeyboardInterrupt:
pi.set_servo_pulsewidth(servos, 0)
finally:
pi.stop()