繁体   English   中英

在1个Tkinter窗口中运行2个.py脚本

[英]Running 2 .py scripts in 1 Tkinter window

短版:使用tkinter控制树莓派机器人项目。 该脚本可以工作,但是希望能够在头部碰到限位开关时控制身体,因此我创建了2个脚本,可以在bash shell中一起运行。 这将创建2个tk窗口,但是只能根据哪个窗口处于活动状态来控制零件,所以我认为在1个tk窗口中运行2个脚本将解决此问题,所以我遵循以下答案: 如何在一个窗口中打开多个Tkinter窗口

脚本运行,我得到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()

设法找出一个不同的计划,仍然只有一个脚本,但是添加了它,而且不是100%,但是看到它是一个简单的机器人项目,我可以接受

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM