2015-02-07 119 views
0

我正在研究一个程序,该程序允许有人输入详细信息以撰写简历。我正在使用Tkinter模块(作为额外的练习),但我已经停留在菜单上!如何关闭一个窗口,当你点击一个按钮打开另一个窗口

目前我有三种不同的选项供用户选择:编写简历,查看简历和退出。我为每个选项创建了一个按钮,当用户按下按钮时,它将打开,但菜单窗口保持打开状态(每个选项都有不同的子例程)。

我知道你需要做一些像window.destroy()这样的操作,但是我不知道如何给一个按钮两个命令,而不需要像创建更多的子例程等那样太繁琐。

我认为我更喜欢的另一种选择是我可以清除菜单屏幕?

以下是节目我都在时刻:

def Main_Menu(): 
    import tkinter 
    main_menu = tkinter.Tk() 
    main_menu.title("CV Writer") 
    main_menu.geometry("300x300") 
    main_menu.wm_iconbitmap('cv_icon.ico') 
    title = tkinter.Label(main_menu, text = "Main Menu", font=("Helvetica",25)) 
    title.pack() 
    gap = tkinter.Label(main_menu, text = "") 
    gap.pack() 
    write_cv = tkinter.Button(main_menu, text = "1) Write CV", font=("Helvetica"), command=Write_CV) 
    write_cv.pack() 
    review_cv = tkinter.Button(main_menu, text = "2) Review CV", font=("Helvetica"), command=Review_CV) 
    review_cv.pack() 
    leave = tkinter.Button(main_menu, text = "3) Exit", font=("Helvetica"), command=Exit) 
    leave.pack() 
    main_menu.mainloop() 

def Write_CV(): 
    import tkinter 
    write_cv = tkinter.Tk() 
    write_cv.geometry("300x300") 
    write_cv.title("Write CV") 

def Review_CV(): 
    import tkinter 
    review_cv = tkinter.Tk() 
    review_cv.geometry("300x300") 
    review_cv.title("Review CV") 

def Exit(): 
    import tkinter 
    leave = tkinter.Tk() 
    leave.geometry("300x300") 
    leave.title("Exit") 

Main_Menu() 

运行程序应有助于使这个问题更有意义!

我很抱歉罗嗦的问题,但任何形式的帮助,将不胜感激!请记住,我只是一名GCSE学生,这么简单的语言也会很好!谢谢!

回答

1

我不知道你为什么要在每种方法下输入tkinter,这完全没用。

import tkinter as tk 

所以,你可以参照部件简单地与二人tk

btn = tk.Button(None, text='I can simply refer to a widget with tk') 
从这个

除此之外,结构简单,在你的文件的开头有这样的语法导入一次你的程序真的很糟糕。在我看来,你不应该在你的函数Main_Menu中实例化Tk,因为它只能在它内部可见。如果你想引用master或root或者任何你想要调用Tk的实例,你不能,因为它是一个本地实例,就像我上面所说的那样。

我平时实例Tk在我的程序的主要功能,或在以下if __name__ == '__main__':结构:

if __name__ == '__main__': 
    master = tk.Tk() # note I am using "tk" 
    # create your objects or call your functions here 
    master.mainloop() 

你在每个功能创建的Tk一个实例,这确实是一个不好的做法,从来没有这样做。您应该只为每个Tkinter应用程序创建一个Tk实例。

您应该使用面向对象的范例或使所有的小部件全局化以构建您的应用程序。

除了这些详细信息,您可以简单地调用master.destroy()当您要销毁主窗口及其所有子窗口小部件,其中master是Tk实例。

一般来说,你有很多错误和不良做法。我的建议是:

阅读关于Python的教程,然后在Tkinter上阅读教程,然后继续执行 。

+0

嗯,好的。所以我搜索了一下,发现了一个很好的网站,我可以看到很多我做错了。感谢您指出这一点,我可以改进我的编程! – Lizzie 2015-02-07 21:34:30

相关问题