【发布时间】:2014-12-15 05:32:15
【问题描述】:
我想在 Python3 中使用 tkMessageBox 发出警告。当用户未从列表框中选择元素时,应该会启动此警告。不幸的是,每当我尝试实现消息框时,它都不会像预期的那样启动。我有一个名为 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 的实现中做错了吗?还是我没有正确检查是否未从列表框中选择项目?
【问题讨论】:
-
您能否提供您的类的完整代码或虚拟版本,我们可以实际复制、粘贴和执行?
-
由于我的代码是一个项目,我无法将整个代码发送过来。所以,我将发送一个链接到 github 中的代码。这是以下 GitHub 链接:My Project 在分支架构工作中。它位于 src/ptgui 目录中。
-
对不起,如果我无法发布我的类的整个代码,因为它需要其他类的函数才能运行。
-
我相信
showwarning是messagebox的一个方法,所以你应该称它为messagebox.showwarning(...)。您没有包含您遇到的错误这一事实使得很难确定这一点,但如果错误类似于NameError: global name 'showwarning' is not defined,可能就是这样。 -
你真的初始化了
tkinter包吗?你说“它没有启动”,但这不是一个非常有启发性的错误报告。你实际上是在创建一个应用程序并调用它的“mainloop()”函数吗?
标签: python listbox tkinter tkmessagebox