【发布时间】:2013-11-21 02:54:22
【问题描述】:
我不知道为什么会这样,但我正在尝试使用 Tkinter 从 MenuBar 创建一个“选项”子窗口。子窗口弹出,但是当我尝试在子窗口中创建标签时,标签出现在主窗口上......我不知道为什么会这样。我已经在互联网上搜索了一段时间,但找不到我的问题的答案。这是代码。
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 了解有用的指导。
-
@abarnert 怎么太多但还不够????是的,它没有运行,因为它是部分的。我在上面说过。我只想知道如何在该子窗口中创建一个标签...我可以将所有代码放在那里以使其运行...但是您不会得到更少的代码。我不知道,老实说,我觉得你好像没有阅读问题的全部细节。如果你运行 slot().mainloop() 代码应该运行得很好它应该使用该代码创建一个带有菜单栏的窗口,我要评估的命令是选项。
-
您认为我没有阅读您问题的哪一部分?同时,如果您阅读我的评论,它会准确地解释代码太多而不够。我可以试着重新措辞一下:你“试图只显示必要的细节”,但你包含了大量不必要的细节(如
About…菜单项和它运行的代码),并遗漏了一些必要的细节(如果很容易通过添加一行使程序可运行,那么添加一行,不要强迫我们猜测需要添加什么)。再次点击链接;它会比我在 SO 评论中解释得更好。
标签: python widget tkinter labels