[英]Python tkinter moving object in def that as been created in another def
我正在创建飘扬的小鸟风格的游戏。 我的问题是我无法移动在另一个def上创建的试管。 我的代码是
from tkinter import *
from random import randint
window = Tk()
c = Canvas(window, width=800, height=800, bg='steelblue')
tube11 = randint(600, 650)
tube12 = randint(400, 700)
def createtubes():
tube1 = c.create_rectangle(800, 800, tube11, tube12, fill='green')
tube2 = c.create_rectangle(800, 0, tube11, 200, fill='green')
def automovement():
if True:
c.move(tube1, -3.5, 0)
c.move(tube2, -3.5, 0)
window.update_idletasks()
window.after(10, automovement)
window.after(60, createtubes)
window.after(10, automovement)
c.pack()
window.mainloop()
尝试创建一个班级
from tkinter import *
from random import randint
window = Tk()
c = Canvas(window, width=800, height=800, bg='steelblue')
tube11 = randint(600, 650)
tube12 = randint(400, 700)
class Tubes:
def __init__(self):
self.createtubes()
def createtubes(self):
self.tube1 = c.create_rectangle(800, 800, tube11, tube12, fill='green')
self.tube2 = c.create_rectangle(800, 0, tube11, 200, fill='green')
def automovement(self):
if True:
c.move(self.tube1, -3.5, 0)
c.move(self.tube2, -3.5, 0)
window.update_idletasks()
window.after(10, self.automovement)
tube = Tubes()
window.after(10, tube.automovement)
c.pack()
window.mainloop()
您还可以在矩形上使用标签选项。
tube1 = c.create_rectangle(800, 800, tube11, tube12, fill='green', tags='tube')
tube2 = c.create_rectangle(800, 0, tube11, 200, fill='green', tags='tube')
在您的函数中,只有一招:
c.move('tube', -3.5, 0)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.