gpt4 book ai didi

python - Tkinter -tkinter.TclError

转载 作者:行者123 更新时间:2023-12-01 05:10:21 27 4
gpt4 key购买 nike

我有以下代码:

from Tkinter import *
from urllib import urlretrieve

import webbrowser
import ttk
def get_latest_launcher():
webbrowser.open("johndoe.com/get_latest")
global percent
percent = 0
def report(count, blockSize, totalSize):

percent += int(count*blockSize*100/totalSize)


homepage = "http://Johndoe.com"
root = Tk()
root.title("Future of Wars launcher")
Button(text="get latest version", command=get_latest_launcher).pack()

global mpb
mpb = ttk.Progressbar(root, orient="horizontal", variable = percent,length="100",
mode="determinate")
mpb.pack()
root.mainloop()
urlretrieve("https://~url~to~my~file.com",
"Smyprogram.exe",reporthook=report)

但是,如果我运行这个脚本,它不会显示进度条,而只会显示按钮。它甚至不会下载文件,光标只会闪烁。但是,如果我关闭 gui 窗口,我会得到以下代码:

Traceback(most recent call last):
File "C:\Users\user\Desktop\downloader.py", line 28 in <module>
mpb = ttk.Progressbar(root, orient="horizontal", variable =
percent,length="100",mode="determinate")
File "C:\Users/user\Desktop\pyttk-0.3\ttk.py" line 1047, in __init__
Widget.__init__(self, master, "ttk::progressbar", kw)
File "C:\Users/user\Desktop\pyttk-0.3\ttk.py", line 574, in __init__
Tkinter.Widget.__init__(self, master, widgetname, kw=kw)
File "C:\Python26\lib\lib-tk\Tkinter.py", line 1930, in __init__
(widgetName, self._w) + extra + self._options(cnf))
_tkinter.TclError: this isn't a Tk applicationNULL main window

出了什么问题?

最佳答案

您的代码中至少有两个问题,尽管它们都不会导致您所说的错误。

首先,使用普通的 Python 变量作为进度条的 variable 属性的值。虽然这会起作用,但它不会像你期望的那样工作。您需要创建 tkinter StringVar 或 IntVar 的实例。此外,您还需要调用该实例的 set 方法,以便进度条看到更改。

其次,在调用mainloop之后你不应该有代码。 Tkinter 被设计为在 mainloop 退出后终止(通常仅在销毁窗口后发生)。您需要将对 urlretrieve 的调用移至其他位置。

关于python - Tkinter -tkinter.TclError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24349136/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com