在1 Tkinter wind中运行2.py脚本

2024-04-16 22:43:14 发布

您现在位置:Python中文网/ 问答频道 /正文

短版本: 在一个小树莓皮机器人项目使用tkinter控制它。 该脚本可以工作,但希望能够控制身体,而头部击中一个限位开关,所以我创建了两个脚本一起运行在一个bashshell。 这将创建2个tk窗口,但只能根据哪个窗口处于活动状态来控制零件 所以我认为在一个tk窗口中运行两个脚本可以解决这个问题,所以我遵循以下答案: How to Open Multiple Tkinter windows in one window

脚本运行,我得到1窗口,但只注册mycode2.py的键盘输入,而没有注册mycode1.py的任何输入

如果我做错了什么事是肯定的还是不可能的?你知道吗

如果有人能给我任何建议,我将不胜感激

谢谢

霉胺1.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()` 

霉胺2.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()

Tags: keypyimportself脚本eventgpioif