【问题标题】:`tkinter.iconbitmap` method returns empty string`tkinter.iconbitmap` 方法返回空字符串
【发布时间】:2018-07-18 06:39:36
【问题描述】:

我有一个应用程序:

class App(tk.Tk):
    def __init__(self):
        super().__init__()
        # Set app title
        self.app_title = 'Visual Python'
        self.title(self.app_title)
        # Set app icon
        self.iconbitmap('icon.ico')

还有一个测试:

class TestApp(unittest.TestCase):
    def setUp(self):
        self.app = App()

    def test_app_title(self):
        self.assertEqual(self.app.title(), 'Visual Python')

    def test_app_icon(self):
        self.assertEqual(self.app.iconbitmap(), 'icon.ico')

当我使用py -3 -m unittest 运行测试时,我得到以下输出:

F.
======================================================================
FAIL: test_app_icon (test.test_app.TestApp)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "C:\Users\ismailarilik\visual-python\test\test_app.py", line 12, in 
test_app_icon
    self.assertEqual(self.app.iconbitmap(), 'icon.ico')
AssertionError: '' != 'icon.ico'
+ icon.ico

----------------------------------------------------------------------
Ran 2 tests in 0.279s

FAILED (failures=1)

为什么这里的iconbitmap 方法返回一个空字符串而不是给定的'icon.ico' 字符串?

【问题讨论】:

    标签: python unit-testing tkinter


    【解决方案1】:

    Source:

    如果为位图指定了一个空字符串,那么任何当前图标 位图被取消窗口。如果指定了位图,则 命令返回一个空字符串。否则返回名称 与窗口关联的当前图标位图,或空字符串,如果 窗口没有图标位图

    我认为您的情况属于以粗体突出显示的最后一种情况。我的意思是您必须确保图标设置为correctly,具体取决于您的平台。

    【讨论】:

    • 我使用的是Windows,可以看到标题左侧的图标。是否说明图标设置正确?
    • 如果您在 GUI 上直观地看到该图标,则确定它设置正确。不过,我无法在我的 Linux 机器上重现您的问题(最好提供 MCVE,因为我认为应该对您的代码进行更多调查以查看问题出在哪里)
    • 我在我的应用程序中使用了这个图标:python.org/static/favicon.ico 我想你可以用这个信息重现这个问题。但是当我阅读讨论时,Tkinter 不支持 GNU/Linux 环境中的 .ico 图像。
    • 我在 Windows 7、Python 3.6.5 上看到了同样的情况。图标设置正确,但iconbitmap() 返回一个空字符串。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-13
    • 2023-03-30
    相关资源
    最近更新 更多