python - Tkinter OptionMenu 遇到问题
问题描述
我在 Python 中使用 Tkinter 来获取Tkinter.Entry
文件夹路径的用户输入 ()。当用户单击 GUI 上的按钮时,该路径将被接受 ( get.Entry
) 并创建该路径中的文件列表 ( os.listdir
) 我想要一个下拉菜单OptionMenu
来显示此列表。
filelist
即使变量非空,我当前的代码也不显示文件列表。为什么会发生这种情况?代码完全运行后,我查看了一下filelist
,发现不是空的。那么为什么会OptionMenu
认为它是空的呢?
以下是我的代码:
import os
import tkinter as tk
from tkinter import ttk
from IPython.core.debugger import set_trace
filepath = ""
filename = ""
filelist = [""]
root = tk.Tk()
def click():
global filepath, filename, filelist
filepath = e.get()
filelist = os.listdir(filepath)
myLabel = tk.Label(root,text = filelist).pack()
path = tk.StringVar()
e = tk.Entry(root,textvariable = path)
e.pack()
myButton = tk.Button(root, text = "click", command = click).pack()
optionVar = tk.StringVar()
op = tk.OptionMenu(root,optionVar,*filelist)
op.pack()
root.mainloop()
Pic1 显示了我的文件夹的内容。 在此处输入图像描述 我发现在文件列表数组中的某些项目周围看到的大括号是因为文件名中的空格。
Pic2 显示了脚本的输出。Print(filelist) 本身显示空文件列表。当按下“单击”按钮时,标签会打印包含三个项目的文件列表。但是 OptionMenu 看不到这个更新的文件列表。 在此处输入图像描述
解决方案
推荐阅读
- python - 如何用 abi 标签创建一个完整的轮子?
- vue.js - 当另一个观察者正在运行时取消观察任何观察者
- visual-studio-code - 如何使用 vscode 命令行附加远程容器?
- dymola - 在 Dymola 中使用“readTrajectory”函数编写向量
- mysql - 如何在mysql数据库中插入多部分表单数据?
- php - 使用 PHP 提供 ZIP 文件内容,无需解压缩到临时位置
- c# - 捕捉按键事件
- laravel - Laravel Route 未为 registercontroller 定义
- angular - 如何遍历数组并使用角度rxjs计算总和
- ssl - 如何禁用 SSL 2.0 和 3.0