如何在Python3.4中正确实现tkMessageBox?

如何在Python3.4中正确实现tkMessageBox?,python,listbox,tkinter,tkmessagebox,Python,Listbox,Tkinter,Tkmessagebox,我想在Python3中使用tkMessageBox发出警告。当用户未从列表框中选择元素时,应发出此警告。不幸的是,每当我尝试实现MessageBox时,它并没有像预期的那样启动。我有一个名为pietalkgui.py的脚本的代码,其中包含我想要实现消息框的代码: from tkinter import messagebox # Gives warning if no user is selected for whisper def whisperwarning(self): # sho

我想在Python3中使用tkMessageBox发出警告。当用户未从列表框中选择元素时,应发出此警告。不幸的是,每当我尝试实现MessageBox时,它并没有像预期的那样启动。我有一个名为pietalkgui.py的脚本的代码,其中包含我想要实现消息框的代码:

from tkinter import messagebox

# Gives warning if no user is selected for whisper
def whisperwarning(self):
    # show warning to user
    showwarning("Select User","Select a user to whisper to!")

# Handles whisper
def whispermessage(self):
    # stores element selected in temp variable
    temp = self.userslist.get(self.userslist.curselection())
     # if no item is selected from userslist (listbox)
    if temp == "":
        # launch warning to user if no item is selected
        self.whisperwarning()
    else:
        # retrieves usernames from userslist
        username = temp
        # storing whisper
        outwhisper = ' /w "' + username +'" ' + self.messagebox.get("0.0",END)
        # handling whisper
        self.handler(outwhisper)
        # erase message in message box
        self.messagebox.delete("0.0",END)

我在tkMessageBox的实现中是否做错了什么?或者我没有正确检查是否从列表框中选择了not item?

您似乎正在调用showwarning方法,但尚未定义或导入它。这是messagebox模块的函数名,因此您可能需要更改:

showwarning("Select User","Select a user to whisper to!")
。。。为此:

messagebox.showwarning("Select User","Select a user to whisper to!")

另外,FWIW,这段代码有点不正确:self.messagebox.delete0.0,结束文本索引从1.0开始,而不是0.0。

你能提供你的类的完整代码,或者一个虚拟版本,我们可以复制、粘贴和执行吗?因为我的代码是一个项目,我不能发送整个代码。因此,我将发送一个指向github中代码的链接。这是以下GitHub链接:在分支架构中工作。它位于src/ptgui目录中。很抱歉,如果我无法发布我的类的全部代码,因为它需要运行其他类的函数。我相信showwarning是messagebox的一种方法,所以您应该将其称为messagebox.showwarning。。。。事实上,您没有包括您收到的错误,这使得确定这一点有点困难,但如果错误类似于NameError:未定义全局名称“showwarning”,则可能就是它。您是否确实初始化了tkinter包?您说它不会启动,但这不是一个很能说明问题的错误报告。你是否真的在创建一个应用程序并调用它的'mainloop函数?'0.0'将在这种特殊情况下工作,因为tk将其转换为'1.0'。但是,对于“1.0”之前的任何索引(如“0.end”)也是如此。例如,“0.end”就永远不会起作用。