Frame support (but no label yet). Display Remi version in the main() teest harness
This commit is contained in:
parent
e469e67cca
commit
d77f660ac6
|
@ -1,6 +1,6 @@
|
||||||
#usr/bin/python3
|
#usr/bin/python3
|
||||||
|
|
||||||
version = __version__ = "0.38.0 Released 06-May-2020"
|
version = __version__ = "0.38.0.1 Unreleased\n Addition of Frame (but without a label)"
|
||||||
|
|
||||||
port = 'PySimpleGUIWeb'
|
port = 'PySimpleGUIWeb'
|
||||||
|
|
||||||
|
@ -19,6 +19,8 @@ import base64, binascii
|
||||||
import mimetypes
|
import mimetypes
|
||||||
from random import randint
|
from random import randint
|
||||||
import time
|
import time
|
||||||
|
import pkg_resources
|
||||||
|
|
||||||
|
|
||||||
# from typing import List, Any, Union, Tuple, Dict # For doing types in comments. perhaps not required
|
# from typing import List, Any, Union, Tuple, Dict # For doing types in comments. perhaps not required
|
||||||
|
|
||||||
|
@ -1908,6 +1910,22 @@ class Graph(Element):
|
||||||
# ---------------------------------------------------------------------- #
|
# ---------------------------------------------------------------------- #
|
||||||
# Frame #
|
# Frame #
|
||||||
# ---------------------------------------------------------------------- #
|
# ---------------------------------------------------------------------- #
|
||||||
|
|
||||||
|
# First the REMI implementation of a frame
|
||||||
|
|
||||||
|
class CLASSframe( remi.gui.VBox ):
|
||||||
|
def __init__(self, title, *args, **kwargs):
|
||||||
|
super( CLASSframe, self ).__init__(*args, **kwargs)
|
||||||
|
self.style.update({"overflow":"visible","border-width":"1px","border-style":"solid","border-color":"#7d7d7d"})
|
||||||
|
self.frame_label = remi.gui.Label('frame label')
|
||||||
|
self.frame_label.style.update({"position":"relative","overflow":"auto","background-color":"#ffffff","border-width":"1px","border-style":"solid","top":"-7px","width":"0px","height":"0px","left":"10px"})
|
||||||
|
self.append(self.frame_label,'frame_label')
|
||||||
|
self.set_title(title)
|
||||||
|
|
||||||
|
def set_title(self, title):
|
||||||
|
self.frame_label.set_text(title)
|
||||||
|
|
||||||
|
|
||||||
class Frame(Element):
|
class Frame(Element):
|
||||||
def __init__(self, title, layout, title_color=None, background_color=None, title_location=None,
|
def __init__(self, title, layout, title_color=None, background_color=None, title_location=None,
|
||||||
relief=DEFAULT_FRAME_RELIEF, element_justification='left', size=(None, None), font=None, pad=None, border_width=None, key=None,
|
relief=DEFAULT_FRAME_RELIEF, element_justification='left', size=(None, None), font=None, pad=None, border_width=None, key=None,
|
||||||
|
@ -1943,6 +1961,8 @@ class Frame(Element):
|
||||||
self.BackgroundColor = background_color if background_color is not None else DEFAULT_BACKGROUND_COLOR
|
self.BackgroundColor = background_color if background_color is not None else DEFAULT_BACKGROUND_COLOR
|
||||||
self.Justification = 'left'
|
self.Justification = 'left'
|
||||||
self.ElementJustification = element_justification
|
self.ElementJustification = element_justification
|
||||||
|
self.Widget = None # type: CLASSframe
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
self.Layout(layout)
|
self.Layout(layout)
|
||||||
|
@ -4146,6 +4166,9 @@ def AddMenuItem(top_menu, sub_menu_info, element, is_sub_menu=False, skip=False)
|
||||||
# ===================================== REMI CODE STARTS HERE ================================================ #
|
# ===================================== REMI CODE STARTS HERE ================================================ #
|
||||||
# ------------------------------------------------------------------------------------------------------------ #
|
# ------------------------------------------------------------------------------------------------------------ #
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def PackFormIntoFrame(form, containing_frame, toplevel_form):
|
def PackFormIntoFrame(form, containing_frame, toplevel_form):
|
||||||
def CharWidthInPixels():
|
def CharWidthInPixels():
|
||||||
return tkinter.font.Font().measure('A') # single character width
|
return tkinter.font.Font().measure('A') # single character width
|
||||||
|
@ -4208,9 +4231,12 @@ def PackFormIntoFrame(form, containing_frame, toplevel_form):
|
||||||
if form.ElementJustification.startswith('c'):
|
if form.ElementJustification.startswith('c'):
|
||||||
tk_row_frame.style['margin-left'] = 'auto'
|
tk_row_frame.style['margin-left'] = 'auto'
|
||||||
tk_row_frame.style['margin-right'] = 'auto'
|
tk_row_frame.style['margin-right'] = 'auto'
|
||||||
|
# tk_row_frame.style['justify-content'] = 'center'
|
||||||
elif form.ElementJustification.startswith('r'):
|
elif form.ElementJustification.startswith('r'):
|
||||||
|
# tk_row_frame.style['justify-content'] = 'flex-end'
|
||||||
tk_row_frame.style['margin-left'] = 'auto'
|
tk_row_frame.style['margin-left'] = 'auto'
|
||||||
else:
|
else: # everything else is left justified
|
||||||
|
# tk_row_frame.style['justify-content'] = 'flex-flexstart'
|
||||||
tk_row_frame.style['margin-right'] = 'auto'
|
tk_row_frame.style['margin-right'] = 'auto'
|
||||||
|
|
||||||
if form.BackgroundColor not in(None, COLOR_SYSTEM_DEFAULT):
|
if form.BackgroundColor not in(None, COLOR_SYSTEM_DEFAULT):
|
||||||
|
@ -4758,19 +4784,27 @@ def PackFormIntoFrame(form, containing_frame, toplevel_form):
|
||||||
# ------------------------- Frame element ------------------------- #
|
# ------------------------- Frame element ------------------------- #
|
||||||
elif element_type == ELEM_TYPE_FRAME:
|
elif element_type == ELEM_TYPE_FRAME:
|
||||||
element = element # type: Frame
|
element = element # type: Frame
|
||||||
element.Widget = column_widget = remi.gui.VBox()
|
# element.Widget = column_widget = remi.gui.VBox()
|
||||||
if element.Justification.startswith('c'):
|
element.Widget = column_widget = CLASSframe(element.Title)
|
||||||
# print('CENTERING')
|
|
||||||
column_widget.style['align-items'] = 'center'
|
|
||||||
column_widget.style['justify-content'] = 'center'
|
|
||||||
else:
|
|
||||||
column_widget.style['justify-content'] = 'flex-start'
|
|
||||||
column_widget.style['align-items'] = 'baseline'
|
|
||||||
if element.BackgroundColor not in (None, COLOR_SYSTEM_DEFAULT):
|
if element.BackgroundColor not in (None, COLOR_SYSTEM_DEFAULT):
|
||||||
column_widget.style['background-color'] = element.BackgroundColor
|
column_widget.style['background-color'] = element.BackgroundColor
|
||||||
PackFormIntoFrame(element, column_widget, toplevel_form)
|
PackFormIntoFrame(element, column_widget, toplevel_form)
|
||||||
tk_row_frame.append(element.Widget)
|
tk_row_frame.append(element.Widget)
|
||||||
|
|
||||||
|
#
|
||||||
|
# element = element # type: Frame
|
||||||
|
# element.Widget = column_widget = remi.gui.VBox()
|
||||||
|
# if element.Justification.startswith('c'):
|
||||||
|
# column_widget.style['align-items'] = 'center'
|
||||||
|
# column_widget.style['justify-content'] = 'center'
|
||||||
|
# else:
|
||||||
|
# column_widget.style['justify-content'] = 'flex-start'
|
||||||
|
# column_widget.style['align-items'] = 'baseline'
|
||||||
|
# if element.BackgroundColor not in (None, COLOR_SYSTEM_DEFAULT):
|
||||||
|
# column_widget.style['background-color'] = element.BackgroundColor
|
||||||
|
# PackFormIntoFrame(element, column_widget, toplevel_form)
|
||||||
|
# tk_row_frame.append(element.Widget)
|
||||||
|
|
||||||
# labeled_frame = tk.LabelFrame(tk_row_frame, text=element.Title, relief=element.Relief)
|
# labeled_frame = tk.LabelFrame(tk_row_frame, text=element.Title, relief=element.Relief)
|
||||||
# PackFormIntoFrame(element, labeled_frame, toplevel_form)
|
# PackFormIntoFrame(element, labeled_frame, toplevel_form)
|
||||||
# labeled_frame.pack(side=tk.LEFT, padx=element.Pad[0], pady=element.Pad[1])
|
# labeled_frame.pack(side=tk.LEFT, padx=element.Pad[0], pady=element.Pad[1])
|
||||||
|
@ -7916,6 +7950,15 @@ def main():
|
||||||
# FolderBrowse()],
|
# FolderBrowse()],
|
||||||
# [Text('Destination Folder', justification='right', size=(40,1)), InputText('Dest'), FolderBrowse()],
|
# [Text('Destination Folder', justification='right', size=(40,1)), InputText('Dest'), FolderBrowse()],
|
||||||
# [Ok(), Cancel(disabled=True), Exit(tooltip='Exit button'), Button('Hidden Button', visible=False)]]
|
# [Ok(), Cancel(disabled=True), Exit(tooltip='Exit button'), Button('Hidden Button', visible=False)]]
|
||||||
|
try:
|
||||||
|
ver = version[:version.index('\n')]
|
||||||
|
except:
|
||||||
|
ver = version
|
||||||
|
|
||||||
|
|
||||||
|
def VerLine(version, description, size=(30,1)):
|
||||||
|
return [Column([[T(description, font='Courier 18', text_color='yellow')], [T(version, font='Courier 18', size=size)]])]
|
||||||
|
|
||||||
|
|
||||||
menu_def = [['&File', ['&Open', '&Save', 'E&xit', 'Properties']],
|
menu_def = [['&File', ['&Open', '&Save', 'E&xit', 'Properties']],
|
||||||
['&Edit', ['Paste', ['Special', 'Normal', ], '!Undo'], ],
|
['&Edit', ['Paste', ['Special', 'Normal', ], '!Undo'], ],
|
||||||
|
@ -7933,12 +7976,16 @@ def main():
|
||||||
layout = [
|
layout = [
|
||||||
[Menu(menu_def, key='_MENU_', text_color='yellow', background_color='#475841', font='Courier 14')],
|
[Menu(menu_def, key='_MENU_', text_color='yellow', background_color='#475841', font='Courier 14')],
|
||||||
# [T('123435', size=(1,8))],
|
# [T('123435', size=(1,8))],
|
||||||
[Text('PySimpleGUIWeb Welcomes You...', tooltip='text', font=('Comic sans ms', 20),size=(40,1), text_color='red', enable_events=False, key='_PySimpleGUIWeb_')],
|
[Text('PySimpleGUIWeb Welcomes You...', tooltip='text', font=('Comic sans ms', 20),size=(40,1), text_color='yellow', enable_events=False, key='_PySimpleGUIWeb_')],
|
||||||
# [OptionMenu([])],
|
# [OptionMenu([])],
|
||||||
[T('System platform = %s'%sys.platform)],
|
[T('System platform = %s'%sys.platform)],
|
||||||
[Image(data=DEFAULT_BASE64_ICON, enable_events=False)],
|
[Image(data=DEFAULT_BASE64_ICON, enable_events=False)],
|
||||||
# [Image(filename=r'C:\Python\PycharmProjects\GooeyGUI\logo500.png', key='-IMAGE-')],
|
# [Image(filename=r'C:\Python\PycharmProjects\GooeyGUI\logo500.png', key='-IMAGE-')],
|
||||||
[Text('VERSION {}'.format(version), text_color='red', font='Courier 24')],
|
VerLine(ver, 'PySimpleGUI Version'),
|
||||||
|
VerLine(os.path.dirname(os.path.abspath(__file__)), 'PySimpleGUI Location'),
|
||||||
|
VerLine(sys.version, 'Python Version', size=(60,2)),
|
||||||
|
VerLine(pkg_resources.get_distribution("remi").version, 'Remi Version'),
|
||||||
|
# [Text('VERSION {}'.format(version), text_color='red', font='Courier 24')],
|
||||||
[T('Current Time '), Text('Text', key='_TEXT_', font='Arial 18', text_color='black', size=(30,1)), Column(col1, background_color='red')],
|
[T('Current Time '), Text('Text', key='_TEXT_', font='Arial 18', text_color='black', size=(30,1)), Column(col1, background_color='red')],
|
||||||
[T('Up Time'), Text('Text', key='_TEXT_UPTIME_', font='Arial 18', text_color='black', size=(30,1))],
|
[T('Up Time'), Text('Text', key='_TEXT_UPTIME_', font='Arial 18', text_color='black', size=(30,1))],
|
||||||
[Input('Single Line Input', do_not_clear=True, enable_events=False, size=(30, 1), text_color='red', key='_IN_')],
|
[Input('Single Line Input', do_not_clear=True, enable_events=False, size=(30, 1), text_color='red', key='_IN_')],
|
||||||
|
|
Loading…
Reference in New Issue