【问题标题】:How to properly implement tkMessageBox in Python3.4?如何在 Python3.4 中正确实现 tkMessageBox?
【发布时间】: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 目录中。
  • 对不起,如果我无法发布我的类的整个代码,因为它需要其他类的函数才能运行。
  • 我相信showwarningmessagebox的一个方法,所以你应该称它为messagebox.showwarning(...)。您没有包含您遇到的错误这一事实使得很难确定这一点,但如果错误类似于NameError: global name 'showwarning' is not defined,可能就是这样。
  • 你真的初始化了tkinter 包吗?你说“它没有启动”,但这不是一个非常有启发性的错误报告。你实际上是在创建一个应用程序并调用它的“mainloop()”函数吗?

标签: python listbox tkinter tkmessagebox


【解决方案1】:

您似乎正在调用方法showwarning,但尚未定义或导入它。那是messagebox 模块的函数名称,所以也许你需要更改它:

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

...到这个:

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

此外,FWIW,此代码略有错误:self.messagebox.delete("0.0",END) -- 文本索引从“1.0”开始,而不是“0.0”。

【讨论】:

  • '0.0' 将在这种特殊情况下工作,因为 tk 会将其转换为 '1.0'。但是,对于“1.0”之前的任何索引,例如“0.end”,它都是一样的。因此,例如,'0.end' 永远不会起作用。
猜你喜欢
  • 1970-01-01
  • 2020-08-07
  • 2020-10-11
  • 2021-11-03
  • 2021-12-13
  • 2021-08-12
  • 2013-10-03
  • 2019-11-23
  • 1970-01-01
相关资源
最近更新 更多