python – 主循环之外的Tkinter事件?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python – 主循环之外的Tkinter事件?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1983字,纯文字阅读大概需要3分钟。
内容图文
![python – 主循环之外的Tkinter事件?](/upload/InfoBanner/zyjiaocheng/814/c7bc04896d19427497125cb61303be10.jpg)
我正在编写的程序有一个tkinter窗口,它不断地手动提供数据,而不是作为主循环的一部分.它还需要跟踪鼠标位置.我还没有找到在mainloop之外跟踪鼠标的解决方法,但是如果你有一个,请告诉我.
from Tkinter import *
import random
import time
def getCoords(event):
xm, ym = event.x, event.y
str1 = "mouse at x=%d y=%d" % (xm, ym)
print str1
class iciclePhysics(object):
def __init__(self, fallrange, speed=5):
self.speed = speed
self.xpos = random.choice(range(0,fallrange))
self.ypos = 0
def draw(self,canvas):
try:
self.id = canvas.create_polygon(self.xpos-10, self.ypos, self.xpos+10, self.ypos, self.xpos, self.ypos+25, fill = 'lightblue')
except:
pass
def fall(self,canvas):
self.ypos+=self.speed
canvas.move(self.id, 0, self.ypos)
root = Tk()
mainFrame = Frame(root, bg= 'yellow', width=300, height=200)
mainFrame.pack()
mainCanvas = Canvas(mainFrame, bg = 'black', height = 500, width = 500, cursor = 'circle')
mainCanvas.bind("<Motion>", getCoords)
mainCanvas.pack()
root.resizable(0, 0)
difficulty = 1500
#root.mainloop()
currentIcicles = [iciclePhysics(difficulty)]
root.update()
currentIcicles[0].draw(mainCanvas)
root.update_idletasks()
time.sleep(0.1)
currentIcicles[0].fall(mainCanvas)
root.update_idletasks()
tracker = 0
sleeptime = 0.04
while True:
tracker+=1
time.sleep(sleeptime)
if tracker % 3 == 0 and difficulty > 500:
difficulty -= 1
elif difficulty <= 500:
sleeptime-=.00002
currentIcicles.append(iciclePhysics(difficulty))
currentIcicles[len(currentIcicles)-1].draw(mainCanvas)
for i in range(len(currentIcicles)):
currentIcicles[i].fall(mainCanvas)
root.update_idletasks()
for i in currentIcicles:
if i.ypos >= 90:
currentIcicles.remove(i)
root.update_idletasks()
解决方法:
没有办法.鼠标移动作为一系列事件呈现给GUI.为了处理事件,必须运行事件循环.
此外,您几乎不应该在GUI应用程序中进行睡眠.所有这一切都是在睡眠期间冻结GUI.
另一个提示:你只需要创建一次冰柱;为了使它下降你可以使用画布的移动方法.
如果您在理解基于事件的编程时遇到问题,解决方案就是不要避免事件循环,解决方案是了解事件循环的工作原理.没有它,你几乎无法创建GUI.
内容总结
以上是互联网集市为您收集整理的python – 主循环之外的Tkinter事件?全部内容,希望文章能够帮你解决python – 主循环之外的Tkinter事件?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。