【发布时间】:2022-10-23 00:43:41
【问题描述】:
好吧,我正在使用 customtkinter 从辅助窗口获取用户输入。
从 MSCode 运行脚本时,一切正常。
- 用户输入
CTkEntry小部件。 -
textvariable正确赋值。 - 此值可在别处访问。
但是,当我使用 pyinstaller 创建相同脚本的 .exe 时,textvariable 只是停止将其值分配给 textvariable
谁能指出我在哪里/什么可能导致这样的错误?
是不是这些模组不兼容?
作为旁注:我在与主窗口类似的庄园中使用CTkEntry,并且没有使用相同语法的此类问题。
我正在使用 auto-py-to-exe 的设置:
- 一个目录
- 基于控制台(用于调试)
- 找到 customTkinter lib 文件夹
-
--hiddenimport win32timezone(否则抛出错误)
窗口看起来像:
self.entryString = tkinter.StringVar()
entryWidget = customtkinter.CTkEntry(master=self.window, textvariable=self.entryString)
entryWidget.pack()
customtkinter.CTkButton(master=self.window, text="Done", command=self.dismissWindow).pack()
稍后使用:
self.entryString.get()
【问题讨论】:
-
不建议在同一行调用几何管理器,因为它们都返回
None,您应该将它们移动到单独的行。我看到你有textvariabel=self.TempNew,我希望它是StringVar的一个实例,因为你正在调用self.entrystring.get(),为什么它设置为self.TempNew? -
@Rory Ahh 我没有在问题中注意到这一点。我正在将其更改为不同的变量,以查看它是否不喜欢“全局”变量(
self.var = __vsvar = __) - 我已经修复了问题中的代码。在那一点上,将.pack()更改为下面的行并没有解决错误,但我知道这是一个更好的做法 -
@Alexander 在我尝试创建一个最小的可重现示例时,我无法复制相同的错误,尽管几乎逐字逐句地复制脚本。不过,正如我在下面回答的那样,我确实在此过程中找到了解决方案
-
@Shock 好消息
标签: python tkinter pyinstaller tkinter-entry customtkinter