如何在前面使用文本标签时仅显示在pysimplegui中选择的文件名

问题描述 投票:0回答:1

这是我第一次尝试 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")

这是我在布局中在其前面得到的文本标签的图片:

这是我在布局中前面没有文本标签时得到的图片:

我的问题是如何使其仅显示文件名,即使文件名文本单元格前面有文本标签也是如此。

python user-interface pysimplegui
1个回答
0
投票
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()
方法作为分割返回元组。

© www.soinside.com 2019 - 2024. All rights reserved.