【问题标题】:Using .split with tkinter将 .split 与 tkinter 一起使用
【发布时间】:2020-02-12 22:23:53
【问题描述】:

这里是个初学者。我有一个命令行脚本可以很好地完成我的工作,我希望将它移到 GUI 中。

os.chdir(ImageDirST)

for f in sorted(os.listdir(ImageDirST)):
    f_name,f_ext = (os.path.splitext(f))
    f_sku = (f_name.split(' ')[0])
    f_num = (f_name[-2:])

    n_name = ('{}_{}{}'.format(f_sku,f_num,f_ext))
    print(f, "-->", n_name)

我希望它在 tkinter 的消息窗口中以相同的方式显示。

在此处的一些帮助下,当按下按钮时,我设法打印了目录中的文件名:

filenames = sorted(os.listdir(ImageDirBT))
text = "\n".join(filenames)
print_filename_test.set(text)

在设置变量之前,我尝试使用拆分代码设置新文件名的列表,其中 print_filenames() 是按下按钮触发的函数。

def print_filenames():
filenames = sorted(os.listdir(ImageDirBT))
for filenames in sorted(os.listdir(ImageDirBT)):
    f_name,f_ext = (os.path.splitext(filenames))
    f_sku = (f_name.split('_')[0])
    f_num = (f_name[-2:])
    n_name = ('{}_{}{}'.format(f_sku,f_num,f_ext))
newlist = "\n".join(n_name)
print_filename_test.set(newlist)

我在 print_filenames() 的代码中没有遇到任何错误,但是消息面板中显示的是列表中的最后一个文件名,垂直方向,一个字符宽: 例如:

F
I
L
E
_
1
1
.
e
x
t

我想将输出显示为:

oldfilename_01.ext --> newfilename_csvdata_01.ext
oldfilename_02.ext --> newfilename_csvdata_02.ext
oldfilename_03.ext --> newfilename_csvdata_03.ext
oldfilename_04.ext --> newfilename_csvdata_04.ext

我编写的命令行程序使用数字来选择需要完成的菜单选项,在完成任何重命名之前进行确认,从而打印文件名比较。我的斗争是操纵列表中的字符串以便能够做同样的事情。

【问题讨论】:

  • 您使用哪个小部件来显示输出? Text?
  • @Henry 消息小部件,但理想情况下它是可滚动的,所以我很乐意改变它

标签: python variables tkinter operating-system


【解决方案1】:

使用messagebox

import os
import tkinter as tk
from tkinter import messagebox

ImageDirST = r"your_path"
os.chdir(ImageDirST)

root = tk.Tk()

names = []
for f in sorted(os.listdir(ImageDirST)):
    f_name,f_ext = (os.path.splitext(f))
    f_sku = (f_name.split(' ')[0])
    f_num = (f_name[-2:])
    n_name = ('{}_{}{}'.format(f_sku,f_num,f_ext))
    names.append(f"{f} --> {n_name}\n")

messagebox.showinfo(title="Something", message="".join(names))
root.mainloop()

或者使用带有滚动条的Text 小部件:

import os
import tkinter as tk
from tkinter.scrolledtext import ScrolledText
ImageDirST = r"your_path"
os.chdir(ImageDirST)

root = tk.Tk()
txt = ScrolledText(root, font="Arial 8")
txt.pack()

for f in sorted(os.listdir(ImageDirST)):
    f_name,f_ext = (os.path.splitext(f))
    f_sku = (f_name.split(' ')[0])
    f_num = (f_name[-2:])
    n_name = ('{}_{}{}'.format(f_sku,f_num,f_ext))
    txt.insert("end",f"{f} --> {n_name}\n")

root.mainloop()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-11-27
    • 1970-01-01
    • 1970-01-01
    • 2013-12-22
    • 2016-06-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多