短いバージョン:小さなラズベリーパイロボットプロジェクトで、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()
https://stackoverflow.com/help/mcve –
こんにちは私はコードを短縮しました – Sanchobob