Python Tkinter Threding

Python Tkinter Threding,tkinter,python-multithreading,Tkinter,Python Multithreading,因此,我想了解python中的类,特别是tkinter。 我只是想创建一个小项目来掌握一些诀窍,但当我试图在程序中添加线程时,我被卡住了。(我可能不太聪明,一下子就想学一大堆东西..我知道..) 我的计划的目的是让一辆小型“汽车”四处行驶,能够加速或减速并转向侧面,同时保持在一个正方形内,这样我就能一直看到她。 代码如下:(相当混乱,只是不知道问题出在哪里…) 从tkinter导入* 进口海龟作为Tr 导入线程 类MyApp(框架): def uuu init uuu(self,master=N

因此,我想了解python中的类,特别是tkinter。 我只是想创建一个小项目来掌握一些诀窍,但当我试图在程序中添加线程时,我被卡住了。(我可能不太聪明,一下子就想学一大堆东西..我知道..) 我的计划的目的是让一辆小型“汽车”四处行驶,能够加速或减速并转向侧面,同时保持在一个正方形内,这样我就能一直看到她。 代码如下:(相当混乱,只是不知道问题出在哪里…)

从tkinter导入*
进口海龟作为Tr
导入线程
类MyApp(框架):
def uuu init uuu(self,master=None):
帧。\uuuu初始化(自,主)
self.grid()
self.MakeBob()
self.createButtons()
walls\u thread=threading.thread(target=self.putwarls)
stay_in=threading.Thread(target=self.StayIn)
move\u thread=threading.thread(target=self.move)
walls\u thread.start()
呆在屋里。开始
move_thread.start()
墙(自身)的定义:
乔
joe.ht()
乔·普()
乔.后藤(-300,-300)
joe.pd()
乔。后藤(-300300)
乔.后藤(300300)
乔.后藤(300,-300)
乔.后藤(-300,-300)
def MakeBob(自我):
self.bob=Tr.Turtle()
自身速度=0
self.bob.pu()
赛尔夫、鲍勃、赛斯(90岁)站起来。
def createButtons(自):
#加速:
self.Accelerate=按钮(宽度=2,bg=“绿色”,fg=“白色”,文本=chr(1640),命令=self.Accelerate)
self.Accelerate.grid(行=0,列=0)
#减速:
self.Deccelerate=按钮(宽度=2,bg=“绿色”,fg=“白色”,text=chr(1639),command=self.Deccelerate)
self.Deccelerate.grid(行=1,列=0)
#对:
self.TurnRight=按钮(宽度=2,bg=“蓝色”,fg=“白色”,text=“>”,命令=self.Right)
self.TurnRight.bind(“w”,self.Right)
self.TurnRight.grid(行=1,列=2)
#左:

self.turnlight=Button(width=2,bg=“blue”,fg=“white”,text=“Tkinter不是线程安全的,对于这样一个简单的项目,您不需要线程。请在此网站上搜索
[Tkinter]动画
此外,并发编程一点也不简单。一步一步地学习。学习类,然后学习tkinter,最后是并发编程。在我看来,玩多线程是不够的。你需要阅读并学习好这些概念。
from tkinter import *
import turtle as Tr
import threading


class MyApp(Frame):
    def __init__(self,master=None):
        Frame.__init__(self,master)
        self.grid()
        self.MakeBob()
        self.createButtons()
        walls_thread = threading.Thread(target=self.PutWalls)
        stay_in = threading.Thread(target=self.StayIn)
        move_thread = threading.Thread(target=self.Move)
        walls_thread.start()
        stay_in.start()
        move_thread.start()

    def PutWalls(self):
        joe = Tr.Turtle()
        joe.ht()
        joe.pu()
        joe.goto(-300,-300)
        joe.pd()
        joe.goto(-300,300)
        joe.goto(300,300)
        joe.goto(300,-300)
        joe.goto(-300,-300)

    def MakeBob(self):
        self.bob = Tr.Turtle()
        self.speed = 0
        self.bob.pu()
        self.bob.seth(90) #Up.


    def createButtons(self):
        #Accelerate:
        self.Accelerate = Button(width=2,bg="green",fg="white",text=chr(1640),command=self.Accelerate)
        self.Accelerate.grid(row=0,column=0)

        #Deccelerate:
        self.Deccelerate = Button(width=2,bg="green",fg="white",text=chr(1639),command=self.Deccelerate)
        self.Deccelerate.grid(row=1,column=0)

        #Right:
        self.TurnRight = Button(width=2,bg="blue",fg="white",text=">",command=self.Right)
        self.TurnRight.bind("w",self.Right)
        self.TurnRight.grid(row=1,column=2)

        #Left:
        self.TurnLeft = Button(width=2,bg="blue",fg="white",text="    <",command=self.Left)
        self.TurnLeft.grid(row=1,column=1)

        #my original thought was that i could use buttons as threading.. ^-^

    def StayIn(self):
        while True:
            if not (-300<self.bob.xcor()<300 and -300<self.bob.ycor()<300):
                self.bob.goto(0,0)
    def Accelerate(self):
        if self.speed < 10:
            self.speed += 0.5

    def Deccelerate(self):
        if self.speed > 0:
            self.speed -= 0.5

    def Right(self):
        self.bob.right(8)

    def Left(self):
        self.bob.left(8)

    def Move(self):
        while True:
            self.bob.forward(self.speed)


    def EXIT(self):
        root.destroy()
root = Tk()
app = MyApp(master=root)
app.master.title("My Do-Nothing Application")
app.master.maxsize(100, 75)
app.mainloop()