首页 > 解决方案 > 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 看不到这个更新的文件列表。 在此处输入图像描述

标签: pythontkinterglobal-variablesoptionmenu

解决方案


推荐阅读