我不知道为什么发生这种情况,但我试图从MenuBar创建一个Tkinter的“选项”子窗口。子窗口弹出,但当我尝试在子窗口内创建标签时,标签出现在主窗口中......我不知道为什么会发生这种情况。我一直在搜索互联网一段时间,无法找到我的问题的答案。这是代码。使用Tkinter在子窗口内创建标签
class slot(Frame):
def __init__(self):
self.root = Frame.__init__(self)
# Set up the main window and the variables
self.master.title("Slot Machine")
# Open in full screen
self.w, self.h = self.master.winfo_screenwidth(), self.master.winfo_screenheight()
self.master.geometry("%dx%d+0+0" % (self.w, self.h))
# Add the drop down menu
menubar = Menu(self.master)
self.master.config(menu=menubar)
fileMenu = Menu(menubar)
fileMenu.add_command(
label="New Game",
command=self.__init__,
underline = 0
)
fileMenu.add_command(
label="Options",
command=self.newStartingValue,
underline = 0
)
fileMenu.add_command(
label="Exit",
command=self.quit,
underline = 0
)
fileMenu.add_separator()
menubar.add_cascade(
label = "File",
menu = fileMenu,
underline = 0
)
helpMenu = Menu(menubar)
helpMenu.add_command(
label="About...",
command=self.showHelp,
underline = 0
)
menubar.add_cascade(label="Help", menu = helpMenu, underline = 0)
# Manage the main window and center everything
self.grid(sticky = W+E+N+S)
self.master.rowconfigure(0, weight = 1)
self.master.columnconfigure(0, weight = 1)
for i in xrange(4):
self.rowconfigure(i, weight = 1)
for i in xrange(3):
self.columnconfigure(i, weight = 1)
def showHelp(self):
showinfo("About", "The One Armed Bandit is a simplistic slot machine game")
def newStartingValue(self):
self._optionsPanel = Toplevel(self.root)
self._optionsPanel.title("Options")
self._optionsPanel.grid()
self._optionsPanelLabel = Label(self, text = "New Pot Starting Value").pack()
self._optionsPanelLabel.grid(row=0,column=1)
我试图只显示必要的细节。我认为这应该可以帮助你弄清楚。如果没有,我可以粘贴所有代码,如果需要。 我不明白为什么标签没有放入self._optionsPanel对象。
这是一次太多的代码(我们真的需要看到所有的所有菜单上的菜单项)并不够接近(它不能按原样运行,并且无法猜测需要将_make_添加到可运行状态的内容)。请参阅[SSCCE](http://sscce.org)获取有用信息。 – abarnert
@abarnert它是如何太多,但几乎不足够?是的,它不会运行,因为它是部分的。我在顶部说过。我只想知道如何在该子窗口内创建一个标签......我可以将所有代码放在那里以便使其运行......但是您不会获得更少的代码。我不知道,我真的觉得好像你没有读到这个问题的全部细节。如果你运行的是slot(),代码应该运行得很好。mainloop()它应该用代码创建一个带有菜单栏的窗口,我要评估的命令是options。 –
你认为我没看过什么部分?同时,如果您阅读了我的评论,它就会明确地解释代码太多而不够。我可以尝试重新说一下它:你“试图只显示必要的细节”,但是你包含了大量不必要的细节(例如'About ...'菜单项和它运行的代码),并且省略了一些必要的细节细节(如果通过添加一行可以使程序易于运行,那么添加一行,不要强迫我们猜测需要添加的内容)。再次,按照链接;它会在SO评论中解释得比我更好。 – abarnert