2017-08-01 101 views
0

簡短版本: 使用tkinter控制它的小樹莓派機器人項目。 該腳本有效,但希望能夠在頭部碰到限位開關時控制身體,因此我創建了2個腳本在bash shell中一起運行。 這將創建2個TK窗戶,但只能控制取決於零件哪個窗口是活動 所以我想具有2個腳本1個tk的窗口中運行將解決這個所以我也跟着這樣的回答: How to Open Multiple Tkinter windows in one window在1個Tkinter窗口中運行2個.py腳本

腳本運行和我得到的1個窗口,但只註冊來自mycode2.py的鍵盤輸入,沒有任何來自mycode1.py

不知道如果我做錯了什麼或者這是可能的嗎?

如果有人可以給我,我會非常感激

感謝

mycode1.py

import time 
import RPi.GPIO as gpio 
import Tkinter as tk 
import os 
import random 
from Tkinter import* 
from headclass import Right 

class Left(Frame): 
    def _init_(self, parent): 
     Frame._init_(self, parent, width=100, height=100) 
     self.config(bg='white') 

class Body: 
     def __init__(self): 
     gpio.setmode(gpio.BOARD) 
     gpio.setwarnings(False) 

     self.y = 0 

     self.command = tk.Tk() 
     self.command.bind('<KeyPress>', self.key_input) 
     self.command.bind('<KeyRelease>', self.key_release) 
     self.command.mainloop() 

# Define keyboard inputs 

    def key_input(self, event): 
     if ord(event.char) == 27: 
      gpio.cleanup() 
      quit() 
     key_press = event.char.lower() 

     if self.y == 0: 
      if key_press == 'w': 
       print 'W' 

     else: 
      pass 

    def key_release(self, event): 
     if self.y == 0: 
      self.stop_body() 
     else: 
      pass 




# instantiate a Robot object to start the program 
my_robot = Body() 


if _name_ == "_main_": 
    root = Tk() 
    Left(root).pack(side=LEFT) 
    Right(root).pack(side=RIGHT) 
    root.mainloop()` 

mycode2.py

import time 
import RPi.GPIO as gpio 
import Tkinter as tk 
import os 
from Tkinter import * 

class Right(Frame): 
    def_init_(self, parent): 
    Frame._init_(self, parent, width=100, height=100) 
    self.config(bg='black') 


class Head: 
    def __init__(self): 
     gpio.setmode(gpio.BOARD) 
     gpio.setwarnings(False) 


     self.x = 1 
     self.y = 0 

     self.command = tk.Tk() 
     self.command.bind('<KeyPress>', self.key_input) 
     self.command.bind('<KeyRelease>', self.key_release) 
     self.command.mainloop() 

# DEFINE KEY INPUT  

    def key_input(self, event): 
     if ord(event.char) == 27: 
      gpio.cleanup() 
      quit() 
     key_press = event.char.lower() 

     if self.y == 0: 
      if key_press == 'n': 
       print 'N' 
     else: 
      pass 

    def key_release(self, event): 
     if self.y == 0: 
      self.stop_head() 
     else: 
      pass 


# instantiate a Robot object to start the program 
my_robot = Head() 
+0

https://stackoverflow.com/help/mcve –

+0

嗨我縮短了代碼 – Sanchobob

回答

0

好不容易纔想出任何建議不同的計劃,仍然有一個腳本,但添加到它並不是100%,但看作是一個SIM卡ple機器人項目我可以住它