首页 > 解决方案 > 在 Tkinter 中循环并没有按我的预期工作

问题描述

最后,我试图在 for 循环中更新一些按钮,这些按钮我不想单独创建。

我尝试使用:

While True:
root.update()

以及另一种类型的更新,以及每个单独的更新,但没有运气。

这是代码:

from tkinter import *
from tkinter.ttk import *
from PIL import Image
from functools import partial
import random

#define variables
#main_window_width = 500
#main_window_height = 500

#def functions
buttons_list = []

def InitButtons(n, k):
    if k == 0:
        k = n
    for i in range(n):
        InitButtons_column = i
        if i//k > 0:
            InitButtons_column = i%k
        buttons_list.append(Label(main_window, image=button_img))
        buttons_list[i].grid(row=(i//k), column=InitButtons_column)

def Hovering(e):
    button_img = PhotoImage(file = '/home/klet/Desktop/projects/Python/GUI/button2.png')
    buttons_list_button.config(image = button_img)
    buttons_list_button.image = button_img

def Clicking(e):
    button_img = PhotoImage(file = '/home/klet/Desktop/projects/Python/GUI/button3.png')
    buttons_list_button.config(image = button_img)
    buttons_list_button.image = button_img  

def NotHovering(e):
    button_img = PhotoImage(file = '/home/klet/Desktop/projects/Python/GUI/button1.png')
    buttons_list_button.config(image = button_img)
    buttons_list_button.image = button_img

def UpdatingButtons(n):
    n.bind("<Enter>", Hovering)
    n.bind("<Leave>", NotHovering)
    n.bind("<Button-1>", Clicking)
    n.bind("<ButtonRelease-1>", Hovering)


root = Tk()

button_img = PhotoImage(file = "/home/klet/Desktop/projects/Python/GUI/button1.png")

main_window = Frame(root)
main_window.place(relx=0.1, rely=0.1, relwidth=0.8, relheight=0.8)

InitButtons(10, 5)

#buttons_list_tmp1 = 0
#buttons_list_tmp1 += 1
#buttons_list_button = 
#UpdatingButtons(buttons_list_tmp1)
#print(buttons_list_tmp1)
for i in range(len(buttons_list)):
    buttons_list_button = buttons_list[i]
    UpdatingButtons(buttons_list_button)
    print(i)

root.mainloop()

上面的 for 循环只重复一次,我希望它不断更新,我还尝试将整个代码(在 root 和 root.mainloop() 中)放在一个 while 循环中,但没有用。我还搜索了一些问题,但它们似乎没有帮助。当我输入按钮和单击时,我想更新按钮(在这种情况下为标签)。这是当前正在发生的事情的一个示例: 链接到 vid

我创建这个帐户只是为了问这个问题,因为我真的不喜欢问问题。

标签: pythontkinter

解决方案


推荐阅读