2017-08-01 18 views
0

短いバージョン:小さなラズベリーパイロボットプロジェクトで、tkinterを使ってそれを制御しています。 スクリプトは動作しますが、ヘッドがリミットスイッチを押している間に本体を制御できるようにしたいので、bashシェルで一緒に実行する2つのスクリプトを作成しました。 これは2つのTkのウィンドウを作成するだけので、私は2つのスクリプトが1つのTKウィンドウで実行持つことは、これを解決するだろうので、私はこの答えに続い考え アクティブなウィンドウに依存する部分を制御することができます。 How to Open Multiple Tkinter windows in one window1つの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

を義務づけられる何かアドバイスを与えることができれば別の計画は、まだ1つのスクリプトを持っているが、それに追加され、100%ではないが、シムとして見ている私はそれと一緒に暮らすことができます

関連する問題