Можно ли получить ввод мыши на экране окна tkinter? - PullRequest
0 голосов
/ 04 марта 2019

Я делаю личный проект, в котором я открываю изображение (gif) в окне Toplevel () в tkinter.Используя вложенные циклы, я открываю несколько изображений следующим образом:

for img in range(10):       *#####EX: 10 gif files*
    imgfile = "path %i.gif" %img *## Each file is named in series e:g 0, 1, 2,...,9*
    for i in range(30):     *#####considering each gif has 30 frames/slides*
        gif = PhotoImage(file=imgfile, format="gif -index %d" %i)
        canvas.create_image(o,o, image=gif, anchor=NW)
        canvas.update()
>>>

После canvas.update () я хотел бы подождать, пока пользователь щелкнет экран окна tkinter в любом месте, прежде чем начнется следующая итерация внешнего цикла,Какую команду я должен использовать рядом с '>>>' в ln 7.

Ответы [ 2 ]

0 голосов
/ 05 марта 2019

Вы можете привязать событие щелчка мыши к окну и обновить изображение в обработчике события щелчка мыши.Ниже приведен пример:

import tkinter as tk

file_idx = 0
image_idx = 0

def update_image():
    global file_idx, image_idx
    imgfile = 'path %i.gif' % file_idx
    canvas.gif = tk.PhotoImage(file=imgfile, format='gif -index %d'%image_idx)
    canvas.create_image(0, 0, image=canvas.gif, anchor='nw')
    image_idx = (image_idx + 1) % 30
    if image_idx == 0: file_idx = (file_idx + 1) % 10

root = tk.Tk()

canvas = tk.Canvas(width=800, height=600)
canvas.pack()

root.bind('<Button-1>', lambda e: update_image())
root.mainloop()
0 голосов
/ 04 марта 2019
from tkinter import *

i = 0
main = Tk()
flag = IntVar(value=1)

def click():
    flag.set(1)

bt = Button(main, command=click, text='continue')
bt.grid()

print('looping')
while i < 50 and flag.get():
    i += 1
    flag.set(0)
    print(i)
    bt.wait_variable(flag)

main.mainloop()

Думаю, этот небольшой демонстрационный код поможет вам решить проблему.Каждый раз, когда вы нажимаете кнопку, увеличивается, я буду печататься на экране, как ваш еще один рисунок.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...