这是我第一次尝试 pysimplegui 应用程序。 之前我经常使用 tkinter,但界面看起来并不那么漂亮和现代。
我想做的是有一个带有 3 个按钮的窗口,2 个用于选择不同的文件,1 个用于启动比较功能。 选择文件后,我只想在界面上显示文件名。 我在网上找到了一些代码可以做到这一点,但文件名前面有一些 {} 字符。 如果我添加 sg.Text() 它会显示完整的文件路径,但我不想这样做,因为我只需要向用户显示文件名。
这是重现我所经历的最少代码:
import PySimpleGUI as sg
import os
layout = [
[sg.InputText(size=(45, 1), key="File_1", disabled=True), sg.FileBrowse(enable_events=True, key="File_path_1", target=(0, 1))],
[sg.InputText(size=(45, 1), key="File_2", disabled=True), sg.FileBrowse(enable_events=True, key="File_path_2", target=(1, 1))],
[sg.Submit()]
]
# layout = [
# [sg.Text('Old_file '), sg.InputText(size=(45, 1), key="File_1", disabled=True), sg.FileBrowse(enable_events=True, key="File_path_1", target=(0, 1))],
# [sg.Text('New_file'), sg.InputText(size=(45, 1), key="File_2", disabled=True), sg.FileBrowse(enable_events=True, key="File_path_2", target=(1, 1))],
# [sg.Submit()]
# ]
window = sg.Window("File compare", layout)
while True:
event, values = window.read()
if event is None or event == "Cancel":
break
elif event == "File_path_1":
filepath = values.get('File_path_1')
yes = os.path.split(filepath)[1]
window['File_1'].update(os.path.split(yes))
elif event == "File_path_2":
filepath = values.get('File_path_2')
yes = os.path.split(filepath)[1]
window['File_2'].update(os.path.split(yes))
elif event == 'Submit':
print("hello")
我的问题是如何使其仅显示文件名,即使文件名文本单元格前面有文本标签也是如此。
while True:
event, values = window.read()
if event is None or event == "Cancel":
break
elif event == "File_path_1":
filepath = values.get('File_path_1')
window['File_1'].update(os.path.basename(filepath))
elif event == "File_path_2":
filepath = values.get('File_path_2')
window['File_2'].update(os.path.basename(filepath))
elif event == 'Submit':
print("hello")
使用
os.path.basename()
而不是 split()
方法作为分割返回元组。