Pysimplegui: [рдкреНрд░рд╢реНрди] FileBrowse/FolderBrowse рдХреЗ рд▓рд┐рдП рдХрд╕реНрдЯрдо рдЫрд╡рд┐ рдХрд╛ рдкреНрд░рдпреЛрдЧ рдХрд░реЗрдВ?

рдХреЛ рдирд┐рд░реНрдорд┐рдд 16 рдЬреБрд▓ре░ 2020  ┬╖  5рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: PySimpleGUI/PySimpleGUI

рдореБрджреНрджреЛрдВ рдХрд╛ рдкреНрд░рдХрд╛рд░ (рдПрдиреНрд╣рд╛рдВрд╕рдореЗрдВрдЯ, рддреНрд░реБрдЯрд┐, рдмрдЧ, рдкреНрд░рд╢реНрди)

рдкреНрд░рд╢реНрди

рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо

рдЙрдмрдВрдЯреВ 18.04.4 рдПрд▓рдЯреАрдПрд╕

рдкрд╛рдпрдерди рд╕рдВрд╕реНрдХрд░рдг

рдкрд╛рдпрдерди 3.6.9

PySimpleGUI рдкреЛрд░реНрдЯ рдФрд░ рд╕рдВрд╕реНрдХрд░рдг

<module 'PySimpleGUI' from '$HOME/temp/test/lib/python3.6/site-packages/PySimpleGUI/__init__.py'>

4.24.0 Released 3-Jul-2020

рдорд╣реАрдиреЛрдВ рдпрд╛ рд╡рд░реНрд╖реЛрдВ рдореЗрдВ рдЖрдкрдХрд╛ рдЕрдиреБрднрд╡ рд╕реНрддрд░

рдкрд╛рдпрдерди рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдЕрдиреБрднрд╡: 4 рд╕рд╛рд▓ред
рдХреБрд▓ рдорд┐рд▓рд╛рдХрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдЕрдиреБрднрд╡: 7 рд╕рд╛рд▓ред
рдкрд╣рд▓реЗ рдПрдХ рдФрд░ рдкрд╛рдпрдерди рдЬреАрдпреВрдЖрдИ рдлреНрд░реЗрдорд╡рд░реНрдХ (рдЯрд┐рдВрдХрд░, рдХреНрдпреВрдЯреА, рдЖрджрд┐) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рд╣реИ (рд╣рд╛рдБ/рдирд╣реАрдВ рдареАрдХ рд╣реИ)? рдирд╛ред

рдЖрдкрдиреЗ рдпреЗ рдЪрд░рдг рдкреВрд░реЗ рдХрд░ рд▓рд┐рдП рд╣реИрдВ:

  • [x] рд╕рдорд╕реНрдпрд╛ рджрд░реНрдЬ рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд┐рд░реНрджреЗрд╢ рдкрдврд╝реЗрдВ
  • [x] рдЖрдкрдХреА рд╕рдорд╕реНрдпрд╛ рдХреЗ рд▓рд┐рдП рдореБрдЦреНрдп рдбреЙрдХреНрд╕ http://www.PySimpleGUI.org рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЦреЛрдЬрд╛ рдЧрдпрд╛
  • [x] рдЖрдкрдХреЗ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреЛрд░реНрдЯ рдХреЗ рд▓рд┐рдП рд░реАрдбрдореА рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЦреЛрдЬрд╛ рдЧрдпрд╛ рдпрджрд┐ PySimpleGUI (Qt, WX, Remi) рдирд╣реАрдВ рд╣реИ
  • [x] рдРрд╕реЗ рдбреЗрдореЛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреА рддрд▓рд╛рд╢ рдХреА рдЬреЛ рдЖрдкрдХреЗ рд▓рдХреНрд╖реНрдп рдХреЗ рд╕рдорд╛рди рд╣реЛрдВ http://www.PySimpleGUI.com
  • [x] рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ GitHub рдкрд░ рдкреНрд░рддреНрдпреЗрдХ рдкреЛрд░реНрдЯ рдХреЗ рдЕрдВрддрд░реНрдЧрдд рдбреЗрдореЛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рднреА рд╣реИрдВ
  • [x] рдЕрдкрдиреЗ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рдЕрдкрдиреЗ рдбреАрдмрдЧрд░ рдХреЗ рдмрд╛рд╣рд░ рдЪрд▓рд╛рдПрдВ (рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рд╕реЗ)
  • [x] рдореБрджреНрджреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЦреЛрдЬрд╛ рдЧрдпрд╛ (рдЦреБрд▓рд╛ рдФрд░ рдмрдВрдж) рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдХреНрдпрд╛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд░рд┐рдкреЛрд░реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ
  • [x] GitHub рдкрд░ рд╡рд░реНрддрдорд╛рди рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреА PySimpleGUI.py рдлрд╝рд╛рдЗрд▓ рдХреЛ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдХреЗ рдкреБрдирдГ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреА рд╕рдорд╕реНрдпрд╛ рдкрд╣рд▓реЗ рд╣реА рдареАрдХ рд╣реЛ рдЧрдИ рд╣реЛ рд▓реЗрдХрд┐рди рдЕрднреА рддрдХ PyPI рдкрд░ рдирд╣реАрдВ рд╣реИред

рдкреНрд░рд╢реНрди рдХрд╛ рд╡рд┐рд╡рд░рдг

рдХреНрдпрд╛ FileBrowse рдпрд╛ FolderBrowse рдХреЗ рд▓рд┐рдП рдХрд╕реНрдЯрдо рдЖрдЗрдХрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ? рдореИрдВрдиреЗ рджреЗрдЦрд╛ рд╣реИ рдХрд┐ рд╡реЗ рджреЛ рд╢реЙрд░реНрдЯрдХрдЯ рдмрдЯрди рдХреЗ рд▓рд┐рдП рд╕рд┐рд░реНрдл рд░реИрдкрд░ рд╣реИрдВ, рдореИрдВрдиреЗ рд╕реЛрдЪрд╛ рдХрд┐ рдореИрдВ image_data рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛ред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдПрдХ рдмрдЯрди рдХреЗ рд╕рд╛рде рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреА рдирдХрд▓ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ, рд╣реИ рдирд╛?

рдЕрдкрдирд╛ рдХреЛрдб рдпрд╣рд╛рдВ рдкреЗрд╕реНрдЯ рдХрд░реЗрдВ


рдХреЛрдб рдирдореВрдирд╛

#!/usr/bin/env python3
import PySimpleGUI as sg

sg.theme('LightBlue')   # Add a touch of color
# All the stuff inside your window.
filepng = "iVBORw0KGgoAAAANSUhEUgAAABMAAAAZCAYAAADTyxWqAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAAuQAAALkB4qdB6AAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAADlSURBVDiN7dW9SkNBEIbhRxO9A0kh/oAgsQ2kVfEqLFLkMmy8DRvrgFjbiWCV5B4CQirtrEQhCbHIHAzHKOeslueDj2WW3Xd2d2AHjjDEFPMC/sAdtq3QsCAk7xF2lkFrcaIarvC4KlvoAi08o4F1POEM42xRlqn7C0hcbY5bnGMS8RgHgp6im0g+wy4esJ8Kgx46Fs+0h+t6AuQY90vxK7ZwUgb2HmMjnNdGGdglXrCZmz/EaRYUreZP6maMvxTgmypYBatg/6a6xW9ZQxtvCYx2jDPSu1PeA2ii76tBlPUk9jc/AameX+bEqOgkAAAAAElFTkSuQmCC"

layout = [
    [sg.Text('Log File')],
    [sg.InputText('output/msf.log', key='inputlog'), sg.FileBrowse(target='inputlog', image_data=filepng)],
    ...
]

# Create the Window
window = sg.Window('AutoAuditor', layout)
# Event Loop to process "events" and get the "values" of the inputs
while True:
    event, values = window.read()
    if event == sg.WIN_CLOSED or event == 'test':   # if user closes window or clicks cancel
        break
    print('You entered ', values[0])

window.close()

рдЬрд╛рд╣рд┐рд░ рд╣реИ, рдореБрдЭреЗ рдПрдХ рддреНрд░реБрдЯрд┐ рдорд┐рд▓рддреА рд╣реИ:

Traceback (most recent call last):
  File "./gui.py", line 9, in <module>
    [sg.InputText('output/msf.log', key='inputlog'), sg.FileBrowse(target='inputlog', image_data=fa.icons['file'])],
TypeError: FileBrowse() got an unexpected keyword argument 'image_data'

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рдЗрд╕ рдмреАрдЪ, рдореИрдВ рдкрд╣рд▓реЗ рд╕реЗ FileBrowser рдмрдЯрди рдмрдирд╛ рд░рд╣рд╛ рд╣реВрдВ, рдФрд░ рдлрд┐рд░ ImageData рдЪрд░ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░ рд░рд╣рд╛ рд╣реВрдВред

рдзрдиреНрдпрд╡рд╛рдж, рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА рдЙрдкрдХрд░рдгред

рд╕рднреА 5 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдмрдЯрди рдкрд░ рдПрдХ рдЫрд╡рд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ? рдЙрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдпрд╣ рдПрдХ рдЖрдЗрдХрди рдирд╣реАрдВ рд╣реИ, рдпрд╣ рдПрдХ рдмрдЯрди рдЫрд╡рд┐ рд╣реИ

рдПрдХ рдХрд╛рд░реНрдп-рдЖрд╕рдкрд╛рд╕ рдХреЗ рд░реВрдк рдореЗрдВ, рдЖрдк FileBrowse рдХреЗ рд▓рд┐рдП рдХреЛрдб рдХреЛ рдХреЙрдкреА рдХрд░рдХреЗ рдФрд░ рдЫрд╡рд┐ (рдпрд╛ рддреЛ рдлрд╝рд╛рдЗрд▓ рдирд╛рдо рдпрд╛ рдбреЗрдЯрд╛) рдХреЛ рдмрдЯрди рдХреЙрд▓ рдореЗрдВ рдЬреЛрдбрд╝рдХрд░ рдПрдХ рдЫрд╡рд┐ рдХреЗ рд╕рд╛рде рдЕрдкрдирд╛ рд╕реНрд╡рдпрдВ рдХрд╛ рдлрд╝рд╛рдЗрд▓ рдмреНрд░рд╛рдЙрдЬрд╝ рдмрдЯрди рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред

рдпрд╣рд╛рдБ FileBrowse рдХреЛрдб рд╣реИ

def FileBrowse(button_text='Browse', target=(ThisRow, -1), file_types=(("ALL Files", "*.*"),), initial_folder=None,
               tooltip=None, size=(None, None), auto_size_button=None, button_color=None, change_submits=False,
               enable_events=False, font=None, disabled=False,
               pad=None, key=None, k=None, metadata=None):
    """

    :param button_text: text in the button (Default value = 'Browse')
    :type button_text: (str)
    :param target: key or (row,col) target for the button (Default value = (ThisRow, -1))
    :param file_types: filter file types (Default value = (("ALL Files", "*.*")))
    :type file_types: Tuple[Tuple[str, str], ...]
    :param initial_folder:  starting path for folders and files
    :param tooltip: text, that will appear when mouse hovers over the element
    :type tooltip: (str)
    :param size:  (w,h) w=characters-wide, h=rows-high
    :type size: (int, int)
    :param auto_size_button:  True if button size is determined by button text
    :type auto_size_button: (bool)
    :param button_color: button color (foreground, background)
    :type button_color: Tuple[str, str] or str
    :param change_submits: If True, pressing Enter key submits window (Default = False)
    :type change_submits: (bool)
    :param enable_events: Turns on the element specific events.(Default = False)
    :type enable_events: (bool)
    :param font: specifies the font family, size, etc
    :type font: Union[str, Tuple[str, int]]
    :param disabled: set disable state for element (Default = False)
    :type disabled: (bool)
    :param pad: Amount of padding to put around element in pixels (left/right, top/bottom)
    :type pad: (int, int) or ((int, int),(int,int)) or (int,(int,int)) or  ((int, int),int)
    :param key: key for uniquely identify this element (for window.FindElement)
    :type key: Union[str, int, tuple, object]
    :param k: Same as the Key. You can use either k or key. Which ever is set will be used.
    :type k: Union[str, int, tuple, object]
    :return: returns a button
    :rtype: (Button)
    """
    return Button(button_text=button_text, button_type=BUTTON_TYPE_BROWSE_FILE, target=target, file_types=file_types,
                  initial_folder=initial_folder, tooltip=tooltip, size=size, auto_size_button=auto_size_button,
                  change_submits=change_submits, enable_events=enable_events, disabled=disabled,
                  button_color=button_color, font=font, pad=pad, key=key, k=k, metadata=metadata)

рд╣рд╛рдБ, рдореЗрд░рд╛ рдорддрд▓рдм рдПрдХ рдЫрд╡рд┐ рд╣реИред рдореИрдВ рдЗрд╕рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░реВрдВрдЧрд╛, рдмрд╣реБрдд рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рджред

рдХреЗрд╡рд▓ рдПрдХ рдЪреАрдЬ рдЬрд┐рд╕реЗ рдЖрдкрдХреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрдкрдиреЗ рдмрдЯрди рдХреЙрд▓ рдореЗрдВ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рд╡рд╣ рд╣реИ рдмрдЯрди_рдЯрд╛рдЗрдкред рдЕрдЧрд░ рдпрд╣ рдлрд╝рд╛рдЗрд▓ рдмреНрд░рд╛рдЙрдЬрд╝ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдирд┐рдпрдВрддреНрд░рд┐рдд рд╣реЛрдЧрд╛ред

рдФрд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдХреБрдЫ рдкреИрд░рд╛рдореАрдЯрд░ рдЬрд┐рдирдореЗрдВ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рди рд╣реЛрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдлрд╝рд╛рдЗрд▓ рдкреНрд░рдХрд╛рд░)

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

DKatarakis picture DKatarakis  ┬╖  6рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

martinmeteor picture martinmeteor  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

ncotrb picture ncotrb  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

ihouses picture ihouses  ┬╖  6рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

OndoyManing picture OndoyManing  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ