我不知道为什么会发生这种情况,但我正在尝试从菜单栏中用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.\u optionsPanel对象。在
最后两行代码中至少有三个问题:
首先,将
self
作为父级传递给Label
。如果你想让它出现在self._optionsPanel
上,你必须将这个作为父对象传递给。在第二,},因此调用{}的尝试将异常回溯打印到
pack
返回None
,因此self._optionsPanelLabel
将是{stderr
,并立即退出函数。我敢打赌,你在代码中多次犯同样的错误,所以你可能有各种各样的错误。在第三,不能在同一个小部件上调用}。或者,更确切地说,你可以,但是一旦你这样做了,}是一个更大的问题。)
pack
和{pack
就被撤消了。(这会破坏同一容器中的任何其他小部件pack
ed,因此在多个小部件上同时调用pack
和{在下一行中,代码在
self
(主窗口内的框架)内创建Label小部件。在将其替换为(将新顶层设置为其父级):
^{pr2}$相关问题 更多 >
编程相关推荐