【问题标题】:PySimpleGUI > file_types() not working on macOSPySimpleGUI > file_types() 在 macOS 上不起作用
【发布时间】:2021-10-29 16:44:02
【问题描述】:

file_types() 在 macOS 上不可用。

在浏览时它应该只显示 PNG 文件。

有谁知道浏览多个 PNG 文件的替代方法?

第 9 行

# /usr/bin/python3
# -*- coding: utf-8 -*-

import PySimpleGUI as sg

def main():

    layout = [
             [sg.FilesBrowse(button_text='Galaxie(n) hochladen', file_types=('.png'), key='_FILES_')],
             [sg.OK(),
              sg.Cancel()]
             ]

    window = sg.Window('Vorverarbeitung', layout, background_color='#1e1e1e')

    while True:
        event, values = window.read()
        print(values['_FILES_'].split(';'))
        if event in (None, 'Exit'):
            break
    window.close()

【问题讨论】:

    标签: python pysimplegui


    【解决方案1】:
    file_types=('.png')    # value in str format
    

    选项file_types 的MacOS 格式错误,应该是Tuple[(str, str), ...]

    file_types=(
        ('All PNG Files', '*.png'), 
        ('All Files', '*.*'),
    )
    

    修改后的代码

    # /usr/bin/python3
    # -*- coding: utf-8 -*-
    
    import PySimpleGUI as sg
    
    def main():
    
        layout = [
            [sg.Input(key='_INPUT_'),
             sg.FilesBrowse(button_text='Galaxie(n) hochladen', file_types=(('All PNG Files', '*.png'), ('All Files', '*.*')), key='_FILES_')],
            [sg.OK(),
             sg.Cancel()],
        ]
    
        window = sg.Window('Vorverarbeitung', layout, background_color='#1e1e1e')
    
        while True:
            event, values = window.read()
            if event in (None, 'Exit'):
                break
            print(values['_INPUT_'].split(';'))
            print(values['_FILES_'].split(';'))
    
        window.close()
    
    main()
    

    看起来这个选项在 PySimpleGUI 中关闭,以便在 MacOS 上运行时出现问题。

                if running_mac():
                    file_name = tk.filedialog.askopenfilenames(initialdir=self.InitialFolder)
                else:
                    file_name = tk.filedialog.askopenfilenames(filetypes=filetypes, initialdir=self.InitialFolder, parent=self.ParentForm.TKroot)
    

    【讨论】:

    • 谢谢@Jaon Yang,但还是不行:/
    • 可能你的新代码还是有问题,更新如上。
    • 还是错了?那是什么 ?没有任何关于它的信息,你可能一无所获。记住不要只用你的语言说出失败,比如这个问题的错误标题。
    • 我同意,它不适用于 Mac(我的是 Big Sur 11.4,Python 3.9)。 @Jason,使用您的代码,我仍然可以看到所有文件类型彼此相邻(.txt、.pdf、.gif、.png、.log、.yaml ...)。在我的应用程序中,它也不起作用。这似乎是一个 macOS 错误,另请参阅 stackoverflow.com/questions/58799432/…(除了在此示例中,我根本没有任何可见的过滤器)。
    【解决方案2】:

    在 PySimpleGUI 主文档中,如果您搜索 file_types,您会发现:

    [编辑] PySimpleGUI 项目建议在 GitHub 上打开问题而不是在此处发布的原因之一是问题表单包含此清单,旨在为您节省大量时间。即使您不想发布问题,下次遇到问题/程序时,请查看 GitHub 问题清单。它可以为您和其他人节省大量时间。

    • [ ] 为您的问题搜索主要文档www.PySimpleGUI.org
    • [ ] 寻找与您的目标相似的演示程序 Demos.PySimpleGUI.org
    • [ ] 如果不是 tkinter - 寻找特定端口的演示程序
    • [ ] 对于非 tkinter - 如果不是 PySimpleGUI(Qt、WX、Remi),请查看特定端口的自述文件
    • [ ] 在调试器之外运行程序(从命令行)
    • [ ] 搜索问题(打开和关闭)以查看是否已报告 Issues.PySimpleGUI.org
    • [ ] 尝试使用 GitHub 上的 PySimpleGUI.py 文件。您的问题可能已经解决但尚未发布

    【讨论】:

      猜你喜欢
      • 2017-12-02
      • 2015-01-16
      • 1970-01-01
      • 1970-01-01
      • 2018-06-08
      • 2018-05-25
      • 2017-02-03
      • 2023-03-29
      • 1970-01-01
      相关资源
      最近更新 更多