如何在Raspberry Pi Python中使用Tkinter进行多进程

时间:2017-01-02 12:17:04

标签: tkinter multiprocess tkinter-scale

我试图同时移动两个舵机。但是我无法移动它。因为第2电机在完成第一次电机运动后移动,我命令tkinter秤。 我从多进程导入过程并尝试过。 当我将缩放命令从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()

0 个答案:

没有答案