【发布时间】:2014-03-04 10:04:45
【问题描述】:
我是 python 新手,我必须编写某种 gui。但是 gui 由子窗口组成,目前只有一个子窗口。问题是在启动时子窗口也会启动。它应该等到单击按钮然后启动子窗口。我不知道它为什么会这样......
#!/usr/bin/env python
from Tkinter import *
import tkMessageBox as box
import rospy
class gui(Frame):
def __init__(self, parent):
Frame.__init__(self, parent, background="white")
self.parent = parent
self.initUI()
def initUI(self):
self.parent.title("Baxter analyse tool")
menubar = Menu(self.parent)
self.parent.config(menu=menubar)
fileMenu = Menu(menubar)
submenu = Menu(fileMenu)
submenu.add_command(label="camera tool", command=self.camera_window())
submenu.add_command(label="range tool")
submenu.add_command(label="control tool")
submenu.add_command(label="sonar tool")
submenu.add_command(label="quick check tool")
fileMenu.add_cascade(label="tools", menu=submenu, underline=0)
fileMenu.add_separator()
fileMenu.add_command(label="Exit", command=self.onExit)
menubar.add_cascade(label="File", menu=fileMenu)
menubar.add_command(label="about", command=self.about)
def camera_window(self):
cameraGui = CameraGui()
def about(self):
box.showinfo("Baxter","Analyse tool.")
def onExit(self):
self.quit()
class CameraGui(object):
def __init__(self):
self.initUI()
def initUI(self):
win = Toplevel()
Label(win, text="testestest").pack()
Button(win, text="hello", command=win.destroy).pack()
def main():
rospy.init_node('baxter_lput_analyse_tool')
root = Tk()
root.geometry("{0}x{1}+0+0".format(root.winfo_screenwidth()/2, root.winfo_screenheight()-50))
root.focus_set()
root.bind("<Escape>", lambda e: e.widget.quit())
app = gui(root)
root.mainloop()
if __name__=='__main__':
main()
程序运行良好,只是它会自动打开子窗口
【问题讨论】: