使用tkinter

时间:2019-07-11 10:51:12

标签: tkinter

我是python / tkinter新手,正在努力使“无模式窗口”出现在根画布的前面,同时完成一些工作,然后以编程方式将其关闭。

几天来一直在尝试了解如何执行此操作。在我使用的RAD工具中,它是1行代码,所以我绝对不在我的深度之内!

from tkinter import * 
from functools import partial
import time

# creating tkinter window 
root = Tk() 
root.overrideredirect(True)

#Define variables

HomeDir = "/temp/" #Home Directory for images etc

# Creating a photoimage object to use on main canvas button 

photo1 = PhotoImage(file = HomeDir + "B1.gif") 

#Create and populate the canvas

w = Canvas(root, width=1024, height=680, highlightthickness=0)
BackgroundImage = PhotoImage(file = HomeDir + "BackGroundImage.gif")
BackgroundCreated = w.create_image((0,0), image=BackgroundImage, anchor=NW)
TopMsg = w.create_text((320, 20), text="TEST", font="MSGothic 30 bold", anchor=NW)
w.pack(side = "bottom", fill = "both", expand = "no")

#Define button actions

def ButtonAction(BN):
    print("Button " + str(BN)) # For debug purposes

    #At this point I want a modeless "Window" to pop up with an image and 
    #some text on it such as "Button X Clicked"
    #and then after a few seconds I want the "Window" to close automatically


# Adding widgets to the root window 

B1 = Button(root, image = photo1, command=partial(ButtonAction,1)).place(x=100,y=300) 


mainloop()

从代码中,我试图使def ButtonAction(BN):执行以下操作:

在根画布前面弹出一个较小的“无模式窗口”,以便显示“请稍候...”之类的图像,并在整个窗口中填充图像。

做一些工作,因此尝试使用睡眠来模拟此操作以暂停操作。

关闭无模式窗口,然后再次返回到主画布。

由于我觉得自己完全错了,因此我不会发表任何努力来做到这一点。

1 个答案:

答案 0 :(得分:1)

您需要做的就是创建Toplevel的实例,然后将所需的所有小部件放入其中。 Toplevel窗口默认为无模式。

要在一段时间后杀死它,可以使用after。看起来像这样:

def ButtonAction(BN):
    top = Toplevel(root)
    label = Label(top, text="Button {} clicked".format(BN))
    label.pack(padx=20, pady=20)

    top.after(5000, top.destroy)