commit
f04586da5e
|
@ -1829,9 +1829,9 @@ class Table(Element):
|
||||||
|
|
||||||
|
|
||||||
# ------------------------------------------------------------------------- #
|
# ------------------------------------------------------------------------- #
|
||||||
# FlexForm CLASS #
|
# Window CLASS #
|
||||||
# ------------------------------------------------------------------------- #
|
# ------------------------------------------------------------------------- #
|
||||||
class FlexForm:
|
class Window:
|
||||||
'''
|
'''
|
||||||
Display a user defined for and return the filled in data
|
Display a user defined for and return the filled in data
|
||||||
'''
|
'''
|
||||||
|
@ -2124,7 +2124,7 @@ class FlexForm:
|
||||||
self.RootNeedsDestroying = True
|
self.RootNeedsDestroying = True
|
||||||
return None
|
return None
|
||||||
|
|
||||||
def CloseNonBlockingForm(self):
|
def CloseNonBlocking(self):
|
||||||
if self.TKrootDestroyed:
|
if self.TKrootDestroyed:
|
||||||
return
|
return
|
||||||
try:
|
try:
|
||||||
|
@ -2132,6 +2132,8 @@ class FlexForm:
|
||||||
_my_windows.Decrement()
|
_my_windows.Decrement()
|
||||||
except: pass
|
except: pass
|
||||||
|
|
||||||
|
CloseNonBlockingForm = CloseNonBlocking
|
||||||
|
|
||||||
def OnClosingCallback(self):
|
def OnClosingCallback(self):
|
||||||
return
|
return
|
||||||
|
|
||||||
|
@ -2151,6 +2153,9 @@ class FlexForm:
|
||||||
# except:
|
# except:
|
||||||
# pass
|
# pass
|
||||||
|
|
||||||
|
FlexForm = Window
|
||||||
|
|
||||||
|
|
||||||
# ------------------------------------------------------------------------- #
|
# ------------------------------------------------------------------------- #
|
||||||
# UberForm CLASS #
|
# UberForm CLASS #
|
||||||
# Used to make forms into TABS (it's trick) #
|
# Used to make forms into TABS (it's trick) #
|
||||||
|
@ -2256,12 +2261,11 @@ def Help(button_text='Help', size=(None, None), auto_size_button=None, button_co
|
||||||
def SimpleButton(button_text, image_filename=None, image_size=(None, None), image_subsample=None, border_width=None,tooltip=None, size=(None, None), auto_size_button=None, button_color=None, font=None, bind_return_key=False, focus=False, pad=None, key=None):
|
def SimpleButton(button_text, image_filename=None, image_size=(None, None), image_subsample=None, border_width=None,tooltip=None, size=(None, None), auto_size_button=None, button_color=None, font=None, bind_return_key=False, focus=False, pad=None, key=None):
|
||||||
return Button(button_text=button_text,button_type=BUTTON_TYPE_CLOSES_WIN, image_filename=image_filename, image_size=image_size, image_subsample=image_subsample, border_width=border_width, tooltip=tooltip, size=size, auto_size_button=auto_size_button, button_color=button_color, font=font, bind_return_key=bind_return_key, focus=focus, pad=pad, key=key)
|
return Button(button_text=button_text,button_type=BUTTON_TYPE_CLOSES_WIN, image_filename=image_filename, image_size=image_size, image_subsample=image_subsample, border_width=border_width, tooltip=tooltip, size=size, auto_size_button=auto_size_button, button_color=button_color, font=font, bind_return_key=bind_return_key, focus=focus, pad=pad, key=key)
|
||||||
# ------------------------- GENERIC BUTTON Element lazy function ------------------------- #
|
# ------------------------- GENERIC BUTTON Element lazy function ------------------------- #
|
||||||
def ReadFormButton(button_text, image_filename=None, image_size=(None, None),image_subsample=None,border_width=None,tooltip=None, size=(None, None), auto_size_button=None, button_color=None, font=None, bind_return_key=False, focus=False, pad=None, key=None):
|
def ReadButton(button_text, image_filename=None, image_size=(None, None),image_subsample=None,border_width=None,tooltip=None, size=(None, None), auto_size_button=None, button_color=None, font=None, bind_return_key=False, focus=False, pad=None, key=None):
|
||||||
return Button( button_text=button_text, button_type=BUTTON_TYPE_READ_FORM, image_filename=image_filename, image_size=image_size, image_subsample=image_subsample, border_width=border_width, tooltip=tooltip, size=size, auto_size_button=auto_size_button, button_color=button_color, font=font, bind_return_key=bind_return_key, focus=focus, pad=pad, key=key)
|
return Button( button_text=button_text, button_type=BUTTON_TYPE_READ_FORM, image_filename=image_filename, image_size=image_size, image_subsample=image_subsample, border_width=border_width, tooltip=tooltip, size=size, auto_size_button=auto_size_button, button_color=button_color, font=font, bind_return_key=bind_return_key, focus=focus, pad=pad, key=key)
|
||||||
|
|
||||||
ReadButton = ReadFormButton
|
ReadFormButton = ReadButton
|
||||||
RButton = ReadFormButton
|
RButton = ReadFormButton
|
||||||
RFButton = ReadFormButton
|
|
||||||
|
|
||||||
|
|
||||||
# ------------------------- Realtime BUTTON Element lazy function ------------------------- #
|
# ------------------------- Realtime BUTTON Element lazy function ------------------------- #
|
||||||
|
@ -4431,7 +4435,7 @@ def PopupYesNo(*args, button_color=None, background_color=None, text_color=None,
|
||||||
|
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
with FlexForm('Demo form..') as form:
|
with Window('Demo form..') as form:
|
||||||
form_rows = [[Text('You are running the PySimpleGUI.py file itself')],
|
form_rows = [[Text('You are running the PySimpleGUI.py file itself')],
|
||||||
[Text('You should be importing it rather than running it', size=(50,2))],
|
[Text('You should be importing it rather than running it', size=(50,2))],
|
||||||
[Text('Here is your sample input form....')],
|
[Text('Here is your sample input form....')],
|
||||||
|
|
|
@ -236,7 +236,7 @@ The architecture of some programs works better with button callbacks instead of
|
||||||
|
|
||||||
# Layout the design of the GUI
|
# Layout the design of the GUI
|
||||||
layout = [[sg.Text('Please click a button', auto_size_text=True)],
|
layout = [[sg.Text('Please click a button', auto_size_text=True)],
|
||||||
[sg.ReadFormButton('1'), sg.ReadFormButton('2'), sg.Quit()]]
|
[sg.ReadButton('1'), sg.ReadButton('2'), sg.Quit()]]
|
||||||
|
|
||||||
# Show the Window to the user
|
# Show the Window to the user
|
||||||
window = sg.Window('Button callback example').Layout(layout)
|
window = sg.Window('Button callback example').Layout(layout)
|
||||||
|
@ -289,7 +289,7 @@ This recipe implements a remote control interface for a robot. There are 4 dire
|
||||||
if button == 'Quit' or values is None:
|
if button == 'Quit' or values is None:
|
||||||
break
|
break
|
||||||
|
|
||||||
window.CloseNonBlockingForm() # Don't forget to close your window!
|
window.CloseNonBlocking() # Don't forget to close your window!
|
||||||
|
|
||||||
---------
|
---------
|
||||||
|
|
||||||
|
@ -499,7 +499,7 @@ Perhaps you don't want all the statistics that the EasyProgressMeter provides an
|
||||||
# update bar with loop value +1 so that bar eventually reaches the maximum
|
# update bar with loop value +1 so that bar eventually reaches the maximum
|
||||||
window.FindElement('progbar').UpdateBar(i + 1)
|
window.FindElement('progbar').UpdateBar(i + 1)
|
||||||
# done with loop... need to destroy the window as it's still open
|
# done with loop... need to destroy the window as it's still open
|
||||||
window.CloseNonBlockingForm()
|
window.CloseNonBlocking()
|
||||||
|
|
||||||
|
|
||||||
----
|
----
|
||||||
|
@ -650,7 +650,7 @@ Just like you can draw on a tkinter widget, you can also draw on a Graph Element
|
||||||
|
|
||||||
layout = [
|
layout = [
|
||||||
[sg.Graph(canvas_size=(400, 400), graph_bottom_left=(0,0), graph_top_right=(400, 400), background_color='red', key='graph')],
|
[sg.Graph(canvas_size=(400, 400), graph_bottom_left=(0,0), graph_top_right=(400, 400), background_color='red', key='graph')],
|
||||||
[sg.T('Change circle color to:'), sg.ReadFormButton('Red'), sg.ReadFormButton('Blue'), sg.ReadFormButton('Move')]
|
[sg.T('Change circle color to:'), sg.ReadButton('Red'), sg.ReadButton('Blue'), sg.ReadButton('Move')]
|
||||||
]
|
]
|
||||||
|
|
||||||
window = sg.Window('Graph test')
|
window = sg.Window('Graph test')
|
||||||
|
@ -820,10 +820,10 @@ In other GUI frameworks this program would be most likely "event driven" with ca
|
||||||
layout = [[sg.T('User:', pad=((3,0),0)), sg.OptionMenu(values = ('User 1', 'User 2'), size=(20,1)), sg.T('0', size=(8,1))],
|
layout = [[sg.T('User:', pad=((3,0),0)), sg.OptionMenu(values = ('User 1', 'User 2'), size=(20,1)), sg.T('0', size=(8,1))],
|
||||||
[sg.T('Customer:', pad=((3,0),0)), sg.OptionMenu(values=('Customer 1', 'Customer 2'), size=(20,1)), sg.T('1', size=(8,1))],
|
[sg.T('Customer:', pad=((3,0),0)), sg.OptionMenu(values=('Customer 1', 'Customer 2'), size=(20,1)), sg.T('1', size=(8,1))],
|
||||||
[sg.T('Notes:', pad=((3,0),0)), sg.In(size=(44,1), background_color='white', text_color='black')],
|
[sg.T('Notes:', pad=((3,0),0)), sg.In(size=(44,1), background_color='white', text_color='black')],
|
||||||
[sg.ReadFormButton('Start', button_color=('white', 'black'), key='Start'),
|
[sg.ReadButton('Start', button_color=('white', 'black'), key='Start'),
|
||||||
sg.ReadFormButton('Stop', button_color=('white', 'black'), key='Stop'),
|
sg.ReadButton('Stop', button_color=('white', 'black'), key='Stop'),
|
||||||
sg.ReadFormButton('Reset', button_color=('white', 'firebrick3'), key='Reset'),
|
sg.ReadButton('Reset', button_color=('white', 'firebrick3'), key='Reset'),
|
||||||
sg.ReadFormButton('Submit', button_color=('white', 'springgreen4'), key='Submit')]
|
sg.ReadButton('Submit', button_color=('white', 'springgreen4'), key='Submit')]
|
||||||
]
|
]
|
||||||
|
|
||||||
window = sg.Window("Time Tracker", default_element_size=(12,1), text_justification='r', auto_size_text=False, auto_size_buttons=False,
|
window = sg.Window("Time Tracker", default_element_size=(12,1), text_justification='r', auto_size_text=False, auto_size_buttons=False,
|
||||||
|
@ -883,7 +883,7 @@ Use the upper half to generate your hash code. Then paste it into the code in t
|
||||||
1. Choose a password
|
1. Choose a password
|
||||||
2. Generate a hash code for your chosen password by running program and entering 'gui' as the password
|
2. Generate a hash code for your chosen password by running program and entering 'gui' as the password
|
||||||
3. Type password into the GUI
|
3. Type password into the GUI
|
||||||
4. Copy and paste hash code form GUI into variable named login_password_hash
|
4. Copy and paste hash code Window GUI into variable named login_password_hash
|
||||||
5. Run program again and test your login!
|
5. Run program again and test your login!
|
||||||
'''
|
'''
|
||||||
|
|
||||||
|
@ -1104,7 +1104,7 @@ Much of the code is handling the button states in a fancy way. It could be much
|
||||||
# --------- After loop --------
|
# --------- After loop --------
|
||||||
|
|
||||||
# Broke out of main loop. Close the window.
|
# Broke out of main loop. Close the window.
|
||||||
window.CloseNonBlockingForm()
|
window.CloseNonBlocking()
|
||||||
|
|
||||||
## Desktop Floating Widget - CPU Utilization
|
## Desktop Floating Widget - CPU Utilization
|
||||||
|
|
||||||
|
@ -1119,12 +1119,12 @@ The spinner changes the number of seconds between reads. Note that you will get
|
||||||
import PySimpleGUI as sg
|
import PySimpleGUI as sg
|
||||||
import psutil
|
import psutil
|
||||||
|
|
||||||
# ---------------- Create Form ----------------
|
# ---------------- Create Window ----------------
|
||||||
sg.ChangeLookAndFeel('Black')
|
sg.ChangeLookAndFeel('Black')
|
||||||
layout = [[sg.Text('')],
|
layout = [[sg.Text('')],
|
||||||
[sg.Text('', size=(8, 2), font=('Helvetica', 20), justification='center', key='text')],
|
[sg.Text('', size=(8, 2), font=('Helvetica', 20), justification='center', key='text')],
|
||||||
[sg.Exit(button_color=('white', 'firebrick4'), pad=((15,0), 0)), sg.Spin([x+1 for x in range(10)], 1, key='spin')]]
|
[sg.Exit(button_color=('white', 'firebrick4'), pad=((15,0), 0)), sg.Spin([x+1 for x in range(10)], 1, key='spin')]]
|
||||||
# Layout the rows of the window and perform a read. Indicate the window is non-blocking!
|
|
||||||
window = sg.Window('Running Timer', no_titlebar=True, auto_size_buttons=False, keep_on_top=True, grab_anywhere=True).Layout(layout)
|
window = sg.Window('Running Timer', no_titlebar=True, auto_size_buttons=False, keep_on_top=True, grab_anywhere=True).Layout(layout)
|
||||||
|
|
||||||
|
|
||||||
|
@ -1148,7 +1148,7 @@ The spinner changes the number of seconds between reads. Note that you will get
|
||||||
window.FindElement('text').Update(f'CPU {cpu_percent:02.0f}%')
|
window.FindElement('text').Update(f'CPU {cpu_percent:02.0f}%')
|
||||||
|
|
||||||
# Broke out of main loop. Close the window.
|
# Broke out of main loop. Close the window.
|
||||||
window.CloseNonBlockingForm()
|
window.CloseNonBlocking()
|
||||||
|
|
||||||
## Menus
|
## Menus
|
||||||
|
|
||||||
|
|
540
docs/index.md
540
docs/index.md
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue