【问题标题】:tkinter python change a listbox file's name without changing the file directory of that filetkinter python 更改列表框文件的名称而不更改该文件的文件目录
【发布时间】:2021-09-30 07:58:54
【问题描述】:

我遇到了这个问题,每当我将文件导入我的列表框时,它都会在列表框中创建项目的名称 C:\blahblah\blahblah\test.txt 这很烦人,因为我只希望“test”或 test.txt 显示在列表框中,但仍然不干扰文件目录,这可能吗?

我正在使用 from tkinter import * btw

我没有尝试太多,因为一旦我更改文件名,文件目录就会随之而来。

示例:

window = Tk()

list = []

listbox = ListBox(window)
listbox.pack()

filedirectory = os.listdir("blahblah/")
for f in filedirectory:
    listbox.inset("end", f"blahblah/{f}") #where it says blahblah is an example of where you could "potentially" change the name but that changes the file directory with it

window.mainloop()

【问题讨论】:

  • 你能分享一下你累了什么(你的代码)吗?如果不查看您的代码,我也无法给您任何建议。
  • 在 for 循环中使用 import os.path,然后使用 os.path.basename(f)。您的示例中还有一个错字。 listbox.inset 应该是 listbox.insert
  • 如果文本文件和python文件在同一目录下,那么你可以简单地使用test.txt而不是提供完整路径
  • 是的,但是作为一个可执行文件,如果有 30 个文件和 exe 文件看起来很奇怪,但是确实可以。

标签: python file tkinter filepath


【解决方案1】:

答案归功于亨利的评论,但我已在评论中添加了您所要求的内容。

如何摆脱扩展?

这是完整的解决方案:

from tkinter import *
import os.path

window = Tk()

listbox = Listbox(window)
listbox.pack()

filedirectory = os.listdir("<path>")
for f in filedirectory:
    listbox.insert("end", f"{os.path.basename(f).split('.')[0]}")

window.mainloop()

您的问题中有一些错别字,我也已更正。第一个是ListBox,应该是Listbox,第二个是insert而不是inset

【讨论】:

  • 我试试这个,稍后再回复您!生病标记答案,如果有效(它可能会)谢谢你!
  • 好的!我正在等待回复。
  • 我强烈建议您在导入某些内容时不要使用通配符 (*),您应该导入您需要的内容,例如from module import Class1, func_1, var_2 等等或导入整个模块:import module 然后你也可以使用别名:import module as md 或类似的东西,关键是不要导入所有内容,除非你真的知道你在做什么;名称冲突是问题所在。
  • 是的,很抱歉耽搁了,我只是在计划一个程序并收集所有潜在问题,这就是其中之一,请耐心等待,不要担心,我会确定的回到它
  • 哦,好吧,我看到你在这里做了什么,所以你基本上只是保留了文件的“名称”,这确实有效,但我在连接一个按钮时遇到了一些问题,所以我尝试了是一个你的想法,基本上列出了一个列表,所以它保留了价值,所以是的,这确实有效,但它给我连接按钮带来了麻烦,我在这个帮助下解决了这个问题!谢谢。 (暂时对不起)
猜你喜欢
  • 2023-02-20
  • 2010-11-12
  • 2022-01-22
  • 2021-04-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多