Python-Tkinter事件生成

Python-Tkinter事件生成,python,tkinter,Python,Tkinter,我正在为我的代码使用GUI,发现很难开发出我想要的东西 首先 在窗口上,图像和标签会在几秒钟后出现并消失。在这之后,一帧应该到达,然后是一个菜单选项,当菜单选项被选中时,它应该从帧中消失,另一个图像应该出现 self.gui = Tk() def configure_window(self): self.gui.geometry('700x500') self.gui.resizable(height=False, width=False) self.gui.upda

我正在为我的代码使用GUI,发现很难开发出我想要的东西

首先

在窗口上,图像和标签会在几秒钟后出现并消失。在这之后,一帧应该到达,然后是一个菜单选项,当菜单选项被选中时,它应该从帧中消失,另一个图像应该出现

self.gui = Tk()

def configure_window(self):

    self.gui.geometry('700x500')
    self.gui.resizable(height=False, width=False)
    self.gui.update()        

    self.welcome_label()
    self.welcome_image()


def welcome__image(self):
    image = Image.open(image path)
    photo = ImageTk.PhotoImage(image)

    welcome_image = Label(master=self.gui, image=photo,  justify='center',relief='raised')
    welcome_image.image = photo
    welcome_image.pack(padx=100, pady=100)
    welcome_image.place(bordermode='outside', x=200,y=100)
    welcome_image.after(ms=1000, func=welcome_image.place_forget)


def welcome_label(self):
    welcome_label = Label(master=self.gui, text=welcome_label_text,font=welcome_label_font, justify='center',
                     state='active', fg='blue', anchor='center', pady=10, relief='raised' )

    welcome_label.place(x=100, y=350)
    welcome_label.after(ms=1000, func=welcome_label.place_forget)

def first_frame(self):
    self.first_frame = LabelFrame( master = self.gui,text='Select First File',font= 'arial 10 bold underline',  bg=self.background_colour,
                       height=200,width=690, bd=1, padx=5, pady=5)
    self.first_frame.pack()
    self.first_frame.place(x=0, y=0)


def select_button1(self):
    self.file_open_button1 =    Button(master=self.first_frame,text='...',state='disabled',command=self.cmd_file_select_button1)
当我运行代码时,在1000毫秒后,welcome_image和welcome_frame会放置和忘记位置,但是,第一个_frame也会与父窗口小部件一起加载。我希望框架在欢迎标签消失后到达

对于LabelFrame,同样的序列继续

我在LabelFrame中有一些小部件,其中有OptionMenu和button,我希望当用户选择一个选项时OptionMenu消失,另一个按钮应该出现,按钮中的顺序相同,按钮返回一些sting,并且应该在按钮的位置出现一个标签等

如何生成序列,例如,如果一个小部件具有place_forget(),则将生成一个序列,并在该序列上绑定另一个小部件。请帮忙


抱歉,如果我不能让你理解我的问题

您不应该在同一容器小部件(窗口或框架)中使用
.pack
.place
布局。而且你绝对不应该在同一个小部件上调用
.pack
.place
@PM2Ring:可以在同一个容器中使用
pack
place
,因为
place
不会影响容器的大小,因此不会与
pack
grid
冲突。另外,在这种情况下,OP在调用
pack
后立即调用
place
,这会抵消
pack
的效果。这很草率,但不会引起任何问题。@BryanOakley很有趣!谢谢你的信息。我一直认为组合不同的布局方法是不可能的,因为它们在某种程度上存在冲突。OTOH,我从不使用
.place
@PM2Ring:“有点冲突”是因为
grid
pack
都可能会调整容器的大小,这会触发另一个调整小部件,导致容器调整大小,从而触发另一个,等等。
place
不会尝试调整容器的大小,所以这并不冲突。你们是说搬家。搬家来解决我的问题吗?