Merge pull request #1602 from PySimpleGUI/Dev-latest
Added Versio #, Added self.Widget to all Elements, Pixel to Chars cut…
This commit is contained in:
commit
432034a472
|
@ -1,4 +1,6 @@
|
||||||
#!/usr/bin/python3
|
#!/usr/bin/python3
|
||||||
|
version = __version__ = "0.27.0 Unreleased"
|
||||||
|
|
||||||
import sys
|
import sys
|
||||||
import types
|
import types
|
||||||
import datetime
|
import datetime
|
||||||
|
@ -114,7 +116,7 @@ DEFAULT_MARGINS = (10, 5) # Margins for each LEFT/RIGHT margin is first term
|
||||||
DEFAULT_ELEMENT_PADDING = (4, 2) # Padding between elements (row, col) in pixels
|
DEFAULT_ELEMENT_PADDING = (4, 2) # Padding between elements (row, col) in pixels
|
||||||
# DEFAULT_ELEMENT_PADDING = (0, 0) # Padding between elements (row, col) in pixels
|
# DEFAULT_ELEMENT_PADDING = (0, 0) # Padding between elements (row, col) in pixels
|
||||||
DEFAULT_PIXELS_TO_CHARS_SCALING = (10,35) # 1 character represents x by y pixels
|
DEFAULT_PIXELS_TO_CHARS_SCALING = (10,35) # 1 character represents x by y pixels
|
||||||
DEFAULT_PIXEL_TO_CHARS_CUTOFF = 12 # number of chars that triggers using pixels instead of chars
|
DEFAULT_PIXEL_TO_CHARS_CUTOFF = 15 # number of chars that triggers using pixels instead of chars
|
||||||
DEFAULT_AUTOSIZE_TEXT = True
|
DEFAULT_AUTOSIZE_TEXT = True
|
||||||
DEFAULT_AUTOSIZE_BUTTONS = True
|
DEFAULT_AUTOSIZE_BUTTONS = True
|
||||||
DEFAULT_FONT = ("Helvetica", 10)
|
DEFAULT_FONT = ("Helvetica", 10)
|
||||||
|
@ -526,7 +528,7 @@ class InputText(Element):
|
||||||
self.Justification = justification or 'left'
|
self.Justification = justification or 'left'
|
||||||
self.Disabled = disabled
|
self.Disabled = disabled
|
||||||
self.ChangeSubmits = change_submits or enable_events
|
self.ChangeSubmits = change_submits or enable_events
|
||||||
self.QT_QLineEdit = None
|
self.Widget = self.QT_QLineEdit = None # type: QLineEdit
|
||||||
self.ValueWasChanged = False
|
self.ValueWasChanged = False
|
||||||
super().__init__(ELEM_TYPE_INPUT_TEXT, size=size, background_color=bg, text_color=fg, key=key, pad=pad,
|
super().__init__(ELEM_TYPE_INPUT_TEXT, size=size, background_color=bg, text_color=fg, key=key, pad=pad,
|
||||||
font=font, tooltip=tooltip, visible=visible, size_px=size_px)
|
font=font, tooltip=tooltip, visible=visible, size_px=size_px)
|
||||||
|
@ -634,7 +636,7 @@ class Combo(Element):
|
||||||
fg = text_color if text_color is not None else DEFAULT_INPUT_TEXT_COLOR
|
fg = text_color if text_color is not None else DEFAULT_INPUT_TEXT_COLOR
|
||||||
self.VisibleItems = visible_items
|
self.VisibleItems = visible_items
|
||||||
self.AutoComplete = auto_complete
|
self.AutoComplete = auto_complete
|
||||||
self.QT_ComboBox = None
|
self.Widget = self.QT_ComboBox = None # type: QComboBox
|
||||||
super().__init__(ELEM_TYPE_INPUT_COMBO, size=size, auto_size_text=auto_size_text, background_color=bg,
|
super().__init__(ELEM_TYPE_INPUT_COMBO, size=size, auto_size_text=auto_size_text, background_color=bg,
|
||||||
text_color=fg, key=key, pad=pad, tooltip=tooltip, font=font or DEFAULT_FONT, visible=visible, size_px=size_px)
|
text_color=fg, key=key, pad=pad, tooltip=tooltip, font=font or DEFAULT_FONT, visible=visible, size_px=size_px)
|
||||||
|
|
||||||
|
@ -694,7 +696,7 @@ class OptionMenu(Element):
|
||||||
def __init__(self, values, default_value=None, size=(None, None), disabled=False, auto_size_text=None,
|
def __init__(self, values, default_value=None, size=(None, None), disabled=False, auto_size_text=None,
|
||||||
background_color=None, text_color=None, key=None, pad=None, tooltip=None, visible=True, size_px=(None,None)):
|
background_color=None, text_color=None, key=None, pad=None, tooltip=None, visible=True, size_px=(None,None)):
|
||||||
'''
|
'''
|
||||||
InputOptionMenu
|
InputOptionMenu - NOT USED IN QT
|
||||||
:param values:
|
:param values:
|
||||||
:param default_value:
|
:param default_value:
|
||||||
:param size:
|
:param size:
|
||||||
|
@ -717,21 +719,7 @@ class OptionMenu(Element):
|
||||||
text_color=fg, key=key, pad=pad, tooltip=tooltip, visible=visible, size_px=size_px)
|
text_color=fg, key=key, pad=pad, tooltip=tooltip, visible=visible, size_px=size_px)
|
||||||
|
|
||||||
def Update(self, value=None, values=None, disabled=None):
|
def Update(self, value=None, values=None, disabled=None):
|
||||||
if values is not None:
|
return
|
||||||
self.Values = values
|
|
||||||
if self.Values is not None:
|
|
||||||
for index, v in enumerate(self.Values):
|
|
||||||
if v == value:
|
|
||||||
try:
|
|
||||||
self.TKStringVar.set(value)
|
|
||||||
except:
|
|
||||||
pass
|
|
||||||
self.DefaultValue = value
|
|
||||||
break
|
|
||||||
if disabled == True:
|
|
||||||
self.TKOptionMenu['state'] = 'disabled'
|
|
||||||
elif disabled == False:
|
|
||||||
self.TKOptionMenu['state'] = 'normal'
|
|
||||||
|
|
||||||
def __del__(self):
|
def __del__(self):
|
||||||
try:
|
try:
|
||||||
|
@ -788,7 +776,7 @@ class Listbox(Element):
|
||||||
self.SelectMode = DEFAULT_LISTBOX_SELECT_MODE
|
self.SelectMode = DEFAULT_LISTBOX_SELECT_MODE
|
||||||
bg = background_color if background_color else DEFAULT_INPUT_ELEMENTS_COLOR
|
bg = background_color if background_color else DEFAULT_INPUT_ELEMENTS_COLOR
|
||||||
fg = text_color if text_color is not None else DEFAULT_INPUT_TEXT_COLOR
|
fg = text_color if text_color is not None else DEFAULT_INPUT_TEXT_COLOR
|
||||||
self.QT_ListWidget = None
|
self.Widget = self.QT_ListWidget = None # type: QListWidget
|
||||||
tsize = size # convert tkinter size to pixels
|
tsize = size # convert tkinter size to pixels
|
||||||
if size[0] is not None and size[0] < 100:
|
if size[0] is not None and size[0] < 100:
|
||||||
tsize = size[0]*DEFAULT_PIXELS_TO_CHARS_SCALING[0], size[1]*DEFAULT_PIXELS_TO_CHARS_SCALING[1]
|
tsize = size[0]*DEFAULT_PIXELS_TO_CHARS_SCALING[0], size[1]*DEFAULT_PIXELS_TO_CHARS_SCALING[1]
|
||||||
|
@ -865,7 +853,7 @@ class Radio(Element):
|
||||||
self.Disabled = disabled
|
self.Disabled = disabled
|
||||||
self.TextColor = text_color or DEFAULT_TEXT_COLOR
|
self.TextColor = text_color or DEFAULT_TEXT_COLOR
|
||||||
self.ChangeSubmits = change_submits or enable_events
|
self.ChangeSubmits = change_submits or enable_events
|
||||||
self.QT_Radio_Button = None
|
self.Widget = self.QT_Radio_Button = None # type: QRadioButton
|
||||||
|
|
||||||
super().__init__(ELEM_TYPE_INPUT_RADIO, size=size, auto_size_text=auto_size_text, font=font,
|
super().__init__(ELEM_TYPE_INPUT_RADIO, size=size, auto_size_text=auto_size_text, font=font,
|
||||||
background_color=background_color, text_color=self.TextColor, key=key, pad=pad,
|
background_color=background_color, text_color=self.TextColor, key=key, pad=pad,
|
||||||
|
@ -916,7 +904,7 @@ class Checkbox(Element):
|
||||||
self.Disabled = disabled
|
self.Disabled = disabled
|
||||||
self.TextColor = text_color if text_color else DEFAULT_TEXT_COLOR
|
self.TextColor = text_color if text_color else DEFAULT_TEXT_COLOR
|
||||||
self.ChangeSubmits = change_submits or enable_events
|
self.ChangeSubmits = change_submits or enable_events
|
||||||
self.QT_Checkbox = None
|
self.Widget = self.QT_Checkbox = None # type: QCheckBox
|
||||||
|
|
||||||
super().__init__(ELEM_TYPE_INPUT_CHECKBOX, size=size, auto_size_text=auto_size_text, font=font,
|
super().__init__(ELEM_TYPE_INPUT_CHECKBOX, size=size, auto_size_text=auto_size_text, font=font,
|
||||||
background_color=background_color, text_color=self.TextColor, key=key, pad=pad,
|
background_color=background_color, text_color=self.TextColor, key=key, pad=pad,
|
||||||
|
@ -979,7 +967,7 @@ class Spin(Element):
|
||||||
self.Disabled = disabled
|
self.Disabled = disabled
|
||||||
bg = background_color if background_color else DEFAULT_INPUT_ELEMENTS_COLOR
|
bg = background_color if background_color else DEFAULT_INPUT_ELEMENTS_COLOR
|
||||||
fg = text_color if text_color is not None else DEFAULT_INPUT_TEXT_COLOR
|
fg = text_color if text_color is not None else DEFAULT_INPUT_TEXT_COLOR
|
||||||
self.QT_Spinner = None
|
self.Widget = self.QT_Spinner = None # type: StringBox
|
||||||
|
|
||||||
super().__init__(ELEM_TYPE_INPUT_SPIN, size, auto_size_text, font=font, background_color=bg, text_color=fg,
|
super().__init__(ELEM_TYPE_INPUT_SPIN, size, auto_size_text, font=font, background_color=bg, text_color=fg,
|
||||||
key=key, pad=pad, tooltip=tooltip, visible=visible, size_px=size_px)
|
key=key, pad=pad, tooltip=tooltip, visible=visible, size_px=size_px)
|
||||||
|
@ -1071,7 +1059,7 @@ class Multiline(Element, QWidget):
|
||||||
tsize = size # convert tkinter size to pixels
|
tsize = size # convert tkinter size to pixels
|
||||||
if size[0] is not None and size[0] < 100:
|
if size[0] is not None and size[0] < 100:
|
||||||
tsize = size[0]*DEFAULT_PIXELS_TO_CHARS_SCALING[0], size[1]*DEFAULT_PIXELS_TO_CHARS_SCALING[1]
|
tsize = size[0]*DEFAULT_PIXELS_TO_CHARS_SCALING[0], size[1]*DEFAULT_PIXELS_TO_CHARS_SCALING[1]
|
||||||
self.QT_TextEdit = None
|
self.Widget = self.QT_TextEdit = None # type: QTextEdit
|
||||||
|
|
||||||
super().__init__(ELEM_TYPE_INPUT_MULTILINE, size=tsize, auto_size_text=auto_size_text, background_color=bg,
|
super().__init__(ELEM_TYPE_INPUT_MULTILINE, size=tsize, auto_size_text=auto_size_text, background_color=bg,
|
||||||
text_color=fg, key=key, pad=pad, tooltip=tooltip, font=font or DEFAULT_FONT, visible=visible, size_px=size_px)
|
text_color=fg, key=key, pad=pad, tooltip=tooltip, font=font or DEFAULT_FONT, visible=visible, size_px=size_px)
|
||||||
|
@ -1088,7 +1076,7 @@ class Multiline(Element, QWidget):
|
||||||
if self.Element.EnterSubmits and event.type() == QEvent.KeyPress and widget is self.QT_TextEdit:
|
if self.Element.EnterSubmits and event.type() == QEvent.KeyPress and widget is self.QT_TextEdit:
|
||||||
key = event.key()
|
key = event.key()
|
||||||
if key in (Qt.Key_Return, Qt.Key_Enter):
|
if key in (Qt.Key_Return, Qt.Key_Enter):
|
||||||
self.Element.ReturnKeyHandler(0)
|
self.Element._ReturnKeyHandler(0)
|
||||||
if event.type() == QEvent.FocusIn and widget is self.QT_TextEdit:
|
if event.type() == QEvent.FocusIn and widget is self.QT_TextEdit:
|
||||||
self.Element.ParentForm.FocusElement = self.Element
|
self.Element.ParentForm.FocusElement = self.Element
|
||||||
return QWidget.eventFilter(self, widget, event)
|
return QWidget.eventFilter(self, widget, event)
|
||||||
|
@ -1156,7 +1144,7 @@ class MultilineOutput(Element):
|
||||||
self.Autoscroll = autoscroll
|
self.Autoscroll = autoscroll
|
||||||
self.Disabled = disabled
|
self.Disabled = disabled
|
||||||
self.ChangeSubmits = change_submits or enable_events
|
self.ChangeSubmits = change_submits or enable_events
|
||||||
self.QT_TextBrowser = None
|
self.Widget = self.QT_TextBrowser = None # type: QTextBrowser
|
||||||
|
|
||||||
super().__init__(ELEM_TYPE_MULTILINE_OUTPUT, size=size, auto_size_text=auto_size_text, background_color=bg,
|
super().__init__(ELEM_TYPE_MULTILINE_OUTPUT, size=size, auto_size_text=auto_size_text, background_color=bg,
|
||||||
text_color=fg, key=key, pad=pad, tooltip=tooltip, font=font or DEFAULT_FONT, visible=visible, size_px=size_px)
|
text_color=fg, key=key, pad=pad, tooltip=tooltip, font=font or DEFAULT_FONT, visible=visible, size_px=size_px)
|
||||||
|
@ -1216,7 +1204,7 @@ class Text(Element):
|
||||||
bg = DEFAULT_TEXT_ELEMENT_BACKGROUND_COLOR
|
bg = DEFAULT_TEXT_ELEMENT_BACKGROUND_COLOR
|
||||||
else:
|
else:
|
||||||
bg = background_color
|
bg = background_color
|
||||||
self.QT_Label = None
|
self.Widget = self.QT_Label = None # type: QLabel
|
||||||
self.Visible = visible
|
self.Visible = visible
|
||||||
|
|
||||||
super().__init__(ELEM_TYPE_TEXT, size, auto_size_text, background_color=bg, font=font if font else DEFAULT_FONT,
|
super().__init__(ELEM_TYPE_TEXT, size, auto_size_text, background_color=bg, font=font if font else DEFAULT_FONT,
|
||||||
|
@ -1229,6 +1217,15 @@ class Text(Element):
|
||||||
element_callback_quit_mainloop(self)
|
element_callback_quit_mainloop(self)
|
||||||
|
|
||||||
def Update(self, value=None, background_color=None, text_color=None, font=None, visible=None):
|
def Update(self, value=None, background_color=None, text_color=None, font=None, visible=None):
|
||||||
|
'''
|
||||||
|
|
||||||
|
:param value:
|
||||||
|
:param background_color:
|
||||||
|
:param text_color:
|
||||||
|
:param font:
|
||||||
|
:param visible:
|
||||||
|
:return:
|
||||||
|
'''
|
||||||
if value is not None:
|
if value is not None:
|
||||||
self.DisplayText = str(value)
|
self.DisplayText = str(value)
|
||||||
self.QT_Label.setText(str(value))
|
self.QT_Label.setText(str(value))
|
||||||
|
@ -1264,7 +1261,7 @@ class Output(Element):
|
||||||
self._TKOut = None
|
self._TKOut = None
|
||||||
bg = background_color if background_color else DEFAULT_INPUT_ELEMENTS_COLOR
|
bg = background_color if background_color else DEFAULT_INPUT_ELEMENTS_COLOR
|
||||||
fg = text_color if text_color is not None else DEFAULT_INPUT_TEXT_COLOR
|
fg = text_color if text_color is not None else DEFAULT_INPUT_TEXT_COLOR
|
||||||
self.QT_TextBrowser = None
|
self.Widget = self.QT_TextBrowser = None # type: QTextBrowser
|
||||||
|
|
||||||
tsize = convert_tkinter_size_to_Qt(size) if size[0] is not None and size[0] < 100 else size
|
tsize = convert_tkinter_size_to_Qt(size) if size[0] is not None and size[0] < 100 else size
|
||||||
|
|
||||||
|
@ -1353,7 +1350,7 @@ class Button(Element):
|
||||||
self.InitialFolder = initial_folder
|
self.InitialFolder = initial_folder
|
||||||
self.Disabled = disabled
|
self.Disabled = disabled
|
||||||
self.ChangeSubmits = change_submits or enable_events
|
self.ChangeSubmits = change_submits or enable_events
|
||||||
self.QT_QPushButton = None
|
self.Widget = self.QT_QPushButton = None # type: QPushButton
|
||||||
self.ColorChosen = None
|
self.ColorChosen = None
|
||||||
# self.temp_size = size if size != (NONE, NONE) else
|
# self.temp_size = size if size != (NONE, NONE) else
|
||||||
|
|
||||||
|
@ -1526,6 +1523,14 @@ class Button(Element):
|
||||||
def SetFocus(self):
|
def SetFocus(self):
|
||||||
self.QT_QPushButton.setFocus()
|
self.QT_QPushButton.setFocus()
|
||||||
|
|
||||||
|
def Click(self):
|
||||||
|
if self.Widget is None:
|
||||||
|
return
|
||||||
|
try:
|
||||||
|
self.Widget.click()
|
||||||
|
except Exception as e:
|
||||||
|
print('Exception {} \nclicking button {}'.format(e, self.ButtonText))
|
||||||
|
|
||||||
|
|
||||||
def __del__(self):
|
def __del__(self):
|
||||||
super().__del__()
|
super().__del__()
|
||||||
|
@ -1580,7 +1585,7 @@ class ButtonMenu(Element):
|
||||||
self.ImageSize = image_size
|
self.ImageSize = image_size
|
||||||
self.ImageSubsample = image_subsample
|
self.ImageSubsample = image_subsample
|
||||||
self.Disabled = disabled
|
self.Disabled = disabled
|
||||||
self.QT_QPushButton = None
|
self.Widget = self.QT_QPushButton = None # type: QPushButton
|
||||||
self.IsButtonMenu = True
|
self.IsButtonMenu = True
|
||||||
self.MenuItemChosen = None
|
self.MenuItemChosen = None
|
||||||
|
|
||||||
|
@ -1606,6 +1611,12 @@ class ButtonMenu(Element):
|
||||||
super().Update(self.QT_QPushButton, background_color=button_color[1], text_color=button_color[0], font=font, visible=visible)
|
super().Update(self.QT_QPushButton, background_color=button_color[1], text_color=button_color[0], font=font, visible=visible)
|
||||||
|
|
||||||
|
|
||||||
|
def Click(self):
|
||||||
|
""" """
|
||||||
|
try:
|
||||||
|
self.QT_QPushButton.click()
|
||||||
|
except Exception as e:
|
||||||
|
print('Exception {} clicking button. Has your Window been Finalized() or Read()?'.format(e))
|
||||||
|
|
||||||
def __del__(self):
|
def __del__(self):
|
||||||
super().__del__()
|
super().__del__()
|
||||||
|
@ -1646,7 +1657,7 @@ class ProgressBar(Element):
|
||||||
if size[0] is not None and size[0] < 100:
|
if size[0] is not None and size[0] < 100:
|
||||||
# tsize = size[0] * DEFAULT_PIXELS_TO_CHARS_SCALING[0], size[1] * DEFAULT_PIXELS_TO_CHARS_SCALING[1]
|
# tsize = size[0] * DEFAULT_PIXELS_TO_CHARS_SCALING[0], size[1] * DEFAULT_PIXELS_TO_CHARS_SCALING[1]
|
||||||
tsize = size[0]*10, size[1]
|
tsize = size[0]*10, size[1]
|
||||||
self.QT_QProgressBar = None
|
self.Widget = self.QT_QProgressBar = None # type: QProgressBar
|
||||||
|
|
||||||
super().__init__(ELEM_TYPE_PROGRESS_BAR, size=tsize, auto_size_text=auto_size_text, key=key, pad=pad, visible=visible, size_px=size_px)
|
super().__init__(ELEM_TYPE_PROGRESS_BAR, size=tsize, auto_size_text=auto_size_text, key=key, pad=pad, visible=visible, size_px=size_px)
|
||||||
|
|
||||||
|
@ -1689,7 +1700,7 @@ class Image(Element):
|
||||||
self.ClickSubmits = click_submits or enable_events
|
self.ClickSubmits = click_submits or enable_events
|
||||||
if data is None and filename is None and data_base64 is None:
|
if data is None and filename is None and data_base64 is None:
|
||||||
print('* Warning... no image specified in Image Element! *')
|
print('* Warning... no image specified in Image Element! *')
|
||||||
self.QT_QLabel = None
|
self.Widget = self.QT_QLabel = None # type: QLabel
|
||||||
|
|
||||||
super().__init__(ELEM_TYPE_IMAGE, size=size, background_color=background_color, pad=pad, key=key,
|
super().__init__(ELEM_TYPE_IMAGE, size=size, background_color=background_color, pad=pad, key=key,
|
||||||
tooltip=tooltip, visible=visible, size_px=size_px)
|
tooltip=tooltip, visible=visible, size_px=size_px)
|
||||||
|
@ -1736,7 +1747,7 @@ class Image(Element):
|
||||||
class Canvas(Element):
|
class Canvas(Element):
|
||||||
def __init__(self, canvas=None, background_color=None, size=(None, None), pad=None, key=None, tooltip=None):
|
def __init__(self, canvas=None, background_color=None, size=(None, None), pad=None, key=None, tooltip=None):
|
||||||
'''
|
'''
|
||||||
Canvas Element
|
Canvas Element - NOT USED IN QT PORT
|
||||||
:param canvas:
|
:param canvas:
|
||||||
:param background_color:
|
:param background_color:
|
||||||
:param size:
|
:param size:
|
||||||
|
@ -1767,7 +1778,7 @@ class Canvas(Element):
|
||||||
# ---------------------------------------------------------------------- #
|
# ---------------------------------------------------------------------- #
|
||||||
class Graph(Element):
|
class Graph(Element):
|
||||||
def __init__(self, canvas_size, graph_bottom_left, graph_top_right, background_color=None, pad=None, key=None,
|
def __init__(self, canvas_size, graph_bottom_left, graph_top_right, background_color=None, pad=None, key=None,
|
||||||
tooltip=None, visible=True, size_px=(None,None)):
|
tooltip=None, visible=True, size_px=(None,None), change_submits=False, enable_events=False, drag_submits=False):
|
||||||
'''
|
'''
|
||||||
Graph Element
|
Graph Element
|
||||||
:param canvas_size:
|
:param canvas_size:
|
||||||
|
@ -1782,7 +1793,7 @@ class Graph(Element):
|
||||||
self.BottomLeft = graph_bottom_left
|
self.BottomLeft = graph_bottom_left
|
||||||
self.TopRight = graph_top_right
|
self.TopRight = graph_top_right
|
||||||
self.x = self.y = 0
|
self.x = self.y = 0
|
||||||
self.QT_QGraphicsScene = None # type: QGraphicsScene
|
self.Widget = self.QT_QGraphicsScene = None # type: QGraphicsScene
|
||||||
|
|
||||||
super().__init__(ELEM_TYPE_GRAPH, background_color=background_color, size=canvas_size, pad=pad, key=key,
|
super().__init__(ELEM_TYPE_GRAPH, background_color=background_color, size=canvas_size, pad=pad, key=key,
|
||||||
tooltip=tooltip, visible=visible, size_px=size_px)
|
tooltip=tooltip, visible=visible, size_px=size_px)
|
||||||
|
@ -1807,6 +1818,19 @@ class Graph(Element):
|
||||||
line = self.QT_QGraphicsScene.addLine(self.x+converted_point_from[0],self.y+ converted_point_from[1], self.x+converted_point_to[0],self.y+ converted_point_to[1], pen=pen)
|
line = self.QT_QGraphicsScene.addLine(self.x+converted_point_from[0],self.y+ converted_point_from[1], self.x+converted_point_to[0],self.y+ converted_point_to[1], pen=pen)
|
||||||
# self.QT_QGraphicsItemGroup.addToGroup(line)
|
# self.QT_QGraphicsItemGroup.addToGroup(line)
|
||||||
|
|
||||||
|
def DrawRectangle(self, top_left, bottom_right, fill_color=None, line_color=None):
|
||||||
|
converted_point_top_left = self._convert_xy_to_canvas_xy(top_left[0], top_left[1])
|
||||||
|
converted_point_bottom_right = self._convert_xy_to_canvas_xy(bottom_right[0], bottom_right[1])
|
||||||
|
|
||||||
|
qcolor = QColor(line_color)
|
||||||
|
pen = QPen(qcolor, 1)
|
||||||
|
qcolor = QColor(fill_color)
|
||||||
|
brush = QBrush(qcolor)
|
||||||
|
line = self.QT_QGraphicsScene.addRect(converted_point_top_left[0],converted_point_top_left[1],
|
||||||
|
converted_point_bottom_right[0]-converted_point_top_left[0],
|
||||||
|
converted_point_bottom_right[1]-converted_point_top_left[1],
|
||||||
|
pen, brush)
|
||||||
|
# self.QT_QGraphicsItemGroup.addToGroup(line)
|
||||||
|
|
||||||
|
|
||||||
def DrawCircle(self, center_location, radius, fill_color=None, line_color='black'):
|
def DrawCircle(self, center_location, radius, fill_color=None, line_color='black'):
|
||||||
|
@ -1815,8 +1839,16 @@ class Graph(Element):
|
||||||
pen = QPen(qcolor)
|
pen = QPen(qcolor)
|
||||||
qcolor = QColor(fill_color)
|
qcolor = QColor(fill_color)
|
||||||
brush = QBrush(qcolor)
|
brush = QBrush(qcolor)
|
||||||
line = self.QT_QGraphicsScene.addEllipse(self.x+converted_point[0], self.y+converted_point[1],
|
circle_id = self.QT_QGraphicsScene.addEllipse(self.x+converted_point[0], self.y+converted_point[1],
|
||||||
radius, radius, pen=pen, brush=brush)
|
radius, radius, pen=pen, brush=brush)
|
||||||
|
return circle_id # type: QGraphicsEllipseItem
|
||||||
|
|
||||||
|
def RelocateFigure(self, id, x, y):
|
||||||
|
id=id # type: QtWidgets.QGraphicsEllipseItem
|
||||||
|
converted_point = self._convert_xy_to_canvas_xy(x, y)
|
||||||
|
id.setX(converted_point[0])
|
||||||
|
id.setY(converted_point[1])
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def DrawText(self, text, location, color='black', font=None, angle=0):
|
def DrawText(self, text, location, color='black', font=None, angle=0):
|
||||||
|
@ -1828,9 +1860,9 @@ class Graph(Element):
|
||||||
qfont = QFont(_font[0], _font[1])
|
qfont = QFont(_font[0], _font[1])
|
||||||
# qfont.setWeight(.5)
|
# qfont.setWeight(.5)
|
||||||
|
|
||||||
qpath.addText(self.x+converted_point[0], self.y+converted_point[1], qfont, str(text))
|
text_id = qpath.addText(self.x+converted_point[0], self.y+converted_point[1], qfont, str(text))
|
||||||
self.QT_QGraphicsScene.addPath(qpath, qcolor)
|
self.QT_QGraphicsScene.addPath(qpath, qcolor)
|
||||||
|
return text_id
|
||||||
|
|
||||||
def Move(self, x_direction, y_direction):
|
def Move(self, x_direction, y_direction):
|
||||||
x_direction = -x_direction
|
x_direction = -x_direction
|
||||||
|
@ -1886,7 +1918,7 @@ class Graph(Element):
|
||||||
converted_bottom_right[1], extent=extent, start=start_angle, style='tkstyle',
|
converted_bottom_right[1], extent=extent, start=start_angle, style='tkstyle',
|
||||||
outline=arc_color)
|
outline=arc_color)
|
||||||
|
|
||||||
def DrawRectangle(self, top_left, bottom_right, fill_color=None, line_color=None):
|
def DrawRectangleOld(self, top_left, bottom_right, fill_color=None, line_color=None):
|
||||||
converted_top_left = self._convert_xy_to_canvas_xy(top_left[0], top_left[1])
|
converted_top_left = self._convert_xy_to_canvas_xy(top_left[0], top_left[1])
|
||||||
converted_bottom_right = self._convert_xy_to_canvas_xy(bottom_right[0], bottom_right[1])
|
converted_bottom_right = self._convert_xy_to_canvas_xy(bottom_right[0], bottom_right[1])
|
||||||
if self._TKCanvas2 is None:
|
if self._TKCanvas2 is None:
|
||||||
|
@ -1970,7 +2002,7 @@ class Frame(Element):
|
||||||
self.TitleLocation = title_location
|
self.TitleLocation = title_location
|
||||||
self.BorderWidth = border_width
|
self.BorderWidth = border_width
|
||||||
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.QT_QGroupBox = None
|
self.Widget = self.QT_QGroupBox = None # type: QGroupBox
|
||||||
self.Layout(layout)
|
self.Layout(layout)
|
||||||
|
|
||||||
super().__init__(ELEM_TYPE_FRAME, background_color=background_color, text_color=title_color, size=size,
|
super().__init__(ELEM_TYPE_FRAME, background_color=background_color, text_color=title_color, size=size,
|
||||||
|
@ -2089,7 +2121,7 @@ class Tab(Element):
|
||||||
self.ParentNotebook = None
|
self.ParentNotebook = None
|
||||||
self.TabID = None
|
self.TabID = None
|
||||||
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.QT_QWidget = None
|
self.Widget = self.QT_QWidget = None # type: QWidget
|
||||||
|
|
||||||
self.Layout(layout)
|
self.Layout(layout)
|
||||||
|
|
||||||
|
@ -2176,7 +2208,7 @@ class TabGroup(Element):
|
||||||
self.BackgroundColor = background_color if background_color is not None else COLOR_SYSTEM_DEFAULT
|
self.BackgroundColor = background_color if background_color is not None else COLOR_SYSTEM_DEFAULT
|
||||||
self.ChangeSubmits = change_submits or enable_events
|
self.ChangeSubmits = change_submits or enable_events
|
||||||
self.TabLocation = tab_location
|
self.TabLocation = tab_location
|
||||||
self.QT_QTabWidget = None
|
self.Widget = self.QT_QTabWidget = None # type: QTabWidget
|
||||||
self.Layout(layout)
|
self.Layout(layout)
|
||||||
|
|
||||||
super().__init__(ELEM_TYPE_TAB_GROUP, background_color=self.BackgroundColor, text_color=title_color, font=font,
|
super().__init__(ELEM_TYPE_TAB_GROUP, background_color=self.BackgroundColor, text_color=title_color, font=font,
|
||||||
|
@ -2272,7 +2304,7 @@ class Slider(Element):
|
||||||
temp_size = (150, 30) if self.Orientation.startswith('h') else (30, 150)
|
temp_size = (150, 30) if self.Orientation.startswith('h') else (30, 150)
|
||||||
elif size[0] is not None and size[0] < 100:
|
elif size[0] is not None and size[0] < 100:
|
||||||
temp_size = size[0]*10, size[1]*3
|
temp_size = size[0]*10, size[1]*3
|
||||||
self.QT_Slider = None
|
self.Widget = self.QT_Slider = None # type:QSlider
|
||||||
|
|
||||||
super().__init__(ELEM_TYPE_INPUT_SLIDER, size=temp_size, font=font, background_color=background_color,
|
super().__init__(ELEM_TYPE_INPUT_SLIDER, size=temp_size, font=font, background_color=background_color,
|
||||||
text_color=text_color, key=key, pad=pad, tooltip=tooltip, visible=visible, size_px=size_px)
|
text_color=text_color, key=key, pad=pad, tooltip=tooltip, visible=visible, size_px=size_px)
|
||||||
|
@ -2347,7 +2379,7 @@ class Dial(Element):
|
||||||
temp_size = size
|
temp_size = size
|
||||||
if temp_size == (None, None):
|
if temp_size == (None, None):
|
||||||
temp_size = (20, 20) if self.Orientation.startswith('h') else (8, 20)
|
temp_size = (20, 20) if self.Orientation.startswith('h') else (8, 20)
|
||||||
self.QT_Dial = None
|
self.Widget = self.QT_Dial = None # type: QDial
|
||||||
|
|
||||||
super().__init__(ELEM_TYPE_INPUT_DIAL, size=temp_size, font=font, background_color=background_color,
|
super().__init__(ELEM_TYPE_INPUT_DIAL, size=temp_size, font=font, background_color=background_color,
|
||||||
text_color=text_color, key=key, pad=pad, tooltip=tooltip, visible=visible, size_px=size_px)
|
text_color=text_color, key=key, pad=pad, tooltip=tooltip, visible=visible, size_px=size_px)
|
||||||
|
@ -2390,7 +2422,7 @@ class Stretch(Element):
|
||||||
:param pad:
|
:param pad:
|
||||||
:param tooltip:
|
:param tooltip:
|
||||||
'''
|
'''
|
||||||
|
self.Widget = None # type: Stretch
|
||||||
super().__init__(ELEM_TYPE_STRETCH, size=size, font=font, background_color=background_color,
|
super().__init__(ELEM_TYPE_STRETCH, size=size, font=font, background_color=background_color,
|
||||||
text_color=text_color, key=key, pad=pad, tooltip=tooltip)
|
text_color=text_color, key=key, pad=pad, tooltip=tooltip)
|
||||||
return
|
return
|
||||||
|
@ -2428,7 +2460,7 @@ class Column(Element):
|
||||||
# self.ImageSize = image_size
|
# self.ImageSize = image_size
|
||||||
# self.ImageSubsample = image_subsample
|
# self.ImageSubsample = image_subsample
|
||||||
bg = background_color if background_color is not None else DEFAULT_BACKGROUND_COLOR
|
bg = background_color if background_color is not None else DEFAULT_BACKGROUND_COLOR
|
||||||
self.QT_QGroupBox = None
|
self.Widget = self.QT_QGroupBox = None # type: QGroupBox
|
||||||
self.Layout(layout)
|
self.Layout(layout)
|
||||||
|
|
||||||
super().__init__(ELEM_TYPE_COLUMN, background_color=bg, size=size, pad=pad, key=key, visible=visible)
|
super().__init__(ELEM_TYPE_COLUMN, background_color=bg, size=size, pad=pad, key=key, visible=visible)
|
||||||
|
@ -2493,7 +2525,8 @@ class Menu(Element):
|
||||||
self.Tearoff = tearoff
|
self.Tearoff = tearoff
|
||||||
self.IsButtonMenu = False
|
self.IsButtonMenu = False
|
||||||
self.MenuItemChosen = None
|
self.MenuItemChosen = None
|
||||||
self.QT_QMenuBar = None
|
self.Widget = self.QT_QMenuBar = None # type: QMenuBar
|
||||||
|
|
||||||
super().__init__(ELEM_TYPE_MENUBAR, background_color=background_color, size=size, pad=pad, key=key, visible=visible)
|
super().__init__(ELEM_TYPE_MENUBAR, background_color=background_color, size=size, pad=pad, key=key, visible=visible)
|
||||||
|
|
||||||
|
|
||||||
|
@ -2578,7 +2611,7 @@ class Table(Element):
|
||||||
self.SelectedRows = []
|
self.SelectedRows = []
|
||||||
self.ChangeSubmits = change_submits or enable_events
|
self.ChangeSubmits = change_submits or enable_events
|
||||||
self.BindReturnKey = bind_return_key
|
self.BindReturnKey = bind_return_key
|
||||||
self.QT_TableWidget = None
|
self.Widget = self.QT_TableWidget = None # type: QTabWidget
|
||||||
|
|
||||||
super().__init__(ELEM_TYPE_TABLE, text_color=text_color, background_color=background_color, font=font,
|
super().__init__(ELEM_TYPE_TABLE, text_color=text_color, background_color=background_color, font=font,
|
||||||
size=size, pad=pad, key=key, tooltip=tooltip, visible=visible, size_px=size_px)
|
size=size, pad=pad, key=key, tooltip=tooltip, visible=visible, size_px=size_px)
|
||||||
|
@ -2722,7 +2755,7 @@ class Tree(Element):
|
||||||
self.SelectedRows = []
|
self.SelectedRows = []
|
||||||
self.ChangeSubmits = change_submits or enable_events
|
self.ChangeSubmits = change_submits or enable_events
|
||||||
self.Size = size
|
self.Size = size
|
||||||
self.QT_QTreeWidget = None # type: QTreeWidget
|
self.Widget = self.QT_QTreeWidget = None # type: QTreeWidget
|
||||||
super().__init__(ELEM_TYPE_TREE, text_color=text_color, background_color=background_color, font=font, pad=pad,
|
super().__init__(ELEM_TYPE_TREE, text_color=text_color, background_color=background_color, font=font, pad=pad,
|
||||||
key=key, tooltip=tooltip, size=size, visible=visible, size_px=size_px)
|
key=key, tooltip=tooltip, size=size, visible=visible, size_px=size_px)
|
||||||
return
|
return
|
||||||
|
@ -2845,6 +2878,7 @@ class ErrorElement(Element):
|
||||||
:param key:
|
:param key:
|
||||||
'''
|
'''
|
||||||
self.Key = key
|
self.Key = key
|
||||||
|
self.Widget = None
|
||||||
|
|
||||||
super().__init__(ELEM_TYPE_ERROR, key=key)
|
super().__init__(ELEM_TYPE_ERROR, key=key)
|
||||||
return
|
return
|
||||||
|
@ -2896,7 +2930,7 @@ class SystemTray:
|
||||||
if Window.QTApplication is None:
|
if Window.QTApplication is None:
|
||||||
Window.QTApplication = QApplication(sys.argv)
|
Window.QTApplication = QApplication(sys.argv)
|
||||||
self.App = Window.QTApplication
|
self.App = Window.QTApplication
|
||||||
self.QWidget = QWidget()
|
self.Widget = self.QWidget = QWidget() # type: QWidget
|
||||||
|
|
||||||
qicon = None
|
qicon = None
|
||||||
if filename is not None:
|
if filename is not None:
|
||||||
|
@ -3209,6 +3243,7 @@ class Window:
|
||||||
|
|
||||||
def Layout(self, rows):
|
def Layout(self, rows):
|
||||||
self.AddRows(rows)
|
self.AddRows(rows)
|
||||||
|
self.BuildKeyDict()
|
||||||
return self
|
return self
|
||||||
|
|
||||||
def LayoutAndRead(self, rows, non_blocking=False):
|
def LayoutAndRead(self, rows, non_blocking=False):
|
||||||
|
@ -3425,23 +3460,63 @@ class Window:
|
||||||
FillFormWithValues(self, values_dict)
|
FillFormWithValues(self, values_dict)
|
||||||
return self
|
return self
|
||||||
|
|
||||||
def FindElement(self, key):
|
def FindElement(self, key, silent_on_error=False):
|
||||||
element = _FindElementFromKeyInSubForm(self, key)
|
try:
|
||||||
|
element = self.AllKeysDict[key]
|
||||||
|
except KeyError:
|
||||||
|
element = None
|
||||||
|
# element = _FindElementFromKeyInSubForm(self, key)
|
||||||
if element is None:
|
if element is None:
|
||||||
print('*** WARNING = FindElement did not find the key. Please check your key\'s spelling ***')
|
if not silent_on_error:
|
||||||
PopupError('Keyword error in FindElement Call',
|
print('*** WARNING = FindElement did not find the key. Please check your key\'s spelling ***')
|
||||||
'Bad key = {}'.format(key),
|
PopupError('Keyword error in FindElement Call',
|
||||||
'Your bad line of code may resemble this:',
|
'Bad key = {}'.format(key),
|
||||||
'window.FindElement("{}")'.format(key))
|
'Your bad line of code may resemble this:',
|
||||||
return ErrorElement(key=key)
|
'window.FindElement("{}")'.format(key))
|
||||||
|
return ErrorElement(key=key)
|
||||||
|
else:
|
||||||
|
return False
|
||||||
return element
|
return element
|
||||||
|
|
||||||
Element = FindElement # shortcut function definition
|
Element = FindElement # Shortcut function
|
||||||
|
|
||||||
|
def BuildKeyDict(self):
|
||||||
|
dict = {}
|
||||||
|
self.AllKeysDict = self._BuildKeyDictForWindow(self,self, dict)
|
||||||
|
|
||||||
|
def _BuildKeyDictForWindow(self, top_window, window, key_dict):
|
||||||
|
for row_num, row in enumerate(window.Rows):
|
||||||
|
for col_num, element in enumerate(row):
|
||||||
|
if element.Type == ELEM_TYPE_COLUMN:
|
||||||
|
key_dict = self._BuildKeyDictForWindow(top_window, element, key_dict)
|
||||||
|
if element.Type == ELEM_TYPE_FRAME:
|
||||||
|
key_dict = self._BuildKeyDictForWindow(top_window, element, key_dict)
|
||||||
|
if element.Type == ELEM_TYPE_TAB_GROUP:
|
||||||
|
key_dict = self._BuildKeyDictForWindow(top_window, element, key_dict)
|
||||||
|
if element.Type == ELEM_TYPE_TAB:
|
||||||
|
key_dict = self._BuildKeyDictForWindow(top_window, element, key_dict)
|
||||||
|
if element.Key is None: # if no key has been assigned.... create one for input elements
|
||||||
|
if element.Type == ELEM_TYPE_BUTTON:
|
||||||
|
element.Key = element.ButtonText
|
||||||
|
if element.Type in (ELEM_TYPE_MENUBAR, ELEM_TYPE_BUTTONMENU, ELEM_TYPE_CANVAS,
|
||||||
|
ELEM_TYPE_INPUT_SLIDER, ELEM_TYPE_GRAPH, ELEM_TYPE_IMAGE,
|
||||||
|
ELEM_TYPE_INPUT_CHECKBOX, ELEM_TYPE_INPUT_LISTBOX, ELEM_TYPE_INPUT_COMBO,
|
||||||
|
ELEM_TYPE_INPUT_MULTILINE, ELEM_TYPE_INPUT_OPTION_MENU, ELEM_TYPE_INPUT_SPIN,
|
||||||
|
ELEM_TYPE_INPUT_TEXT):
|
||||||
|
element.Key = top_window.DictionaryKeyCounter
|
||||||
|
top_window.DictionaryKeyCounter += 1
|
||||||
|
if element.Key is not None:
|
||||||
|
if element.Key in key_dict.keys():
|
||||||
|
print('*** Duplicate key found in your layout {} ***'.format(element.Key)) if element.Type != ELEM_TYPE_BUTTON else None
|
||||||
|
element.Key = element.Key + str(self.UniqueKeyCounter)
|
||||||
|
self.UniqueKeyCounter += 1
|
||||||
|
print('*** Replaced new key with {} ***'.format(element.Key)) if element.Type != ELEM_TYPE_BUTTON else None
|
||||||
|
key_dict[element.Key] = element
|
||||||
|
return key_dict
|
||||||
|
|
||||||
def FindElementWithFocus(self):
|
def FindElementWithFocus(self):
|
||||||
return self.FocusElement
|
return _FindElementWithFocusInSubForm(self)
|
||||||
element = _FindElementWithFocusInSubForm(self)
|
# return self.FocusElement
|
||||||
return element
|
|
||||||
|
|
||||||
def SaveToDisk(self, filename):
|
def SaveToDisk(self, filename):
|
||||||
try:
|
try:
|
||||||
|
@ -3692,6 +3767,7 @@ class Window:
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def __enter__(self):
|
def __enter__(self):
|
||||||
return self
|
return self
|
||||||
|
|
||||||
|
@ -4036,6 +4112,8 @@ def ColorChooserButton(button_text, target=(None, None), image_filename=None, im
|
||||||
##################################### ----- RESULTS ------ ##################################################
|
##################################### ----- RESULTS ------ ##################################################
|
||||||
|
|
||||||
def AddToReturnDictionary(form, element, value):
|
def AddToReturnDictionary(form, element, value):
|
||||||
|
form.ReturnValuesDictionary[element.Key] = value
|
||||||
|
return
|
||||||
if element.Key is None:
|
if element.Key is None:
|
||||||
form.ReturnValuesDictionary[form.DictionaryKeyCounter] = value
|
form.ReturnValuesDictionary[form.DictionaryKeyCounter] = value
|
||||||
element.Key = form.DictionaryKeyCounter
|
element.Key = form.DictionaryKeyCounter
|
||||||
|
@ -4345,10 +4423,15 @@ def _FindElementWithFocusInSubForm(form):
|
||||||
matching_elem = _FindElementWithFocusInSubForm(element)
|
matching_elem = _FindElementWithFocusInSubForm(element)
|
||||||
if matching_elem is not None:
|
if matching_elem is not None:
|
||||||
return matching_elem
|
return matching_elem
|
||||||
if element.Type == ELEM_TYPE_INPUT_TEXT:
|
try:
|
||||||
if element.QT_QLineEdit is not None:
|
if element.Widget.hasFocus():
|
||||||
if element.QT_QLineEdit is element.TKEntry.focus_get():
|
return element
|
||||||
return element
|
except:
|
||||||
|
continue
|
||||||
|
# if element.Type == ELEM_TYPE_INPUT_TEXT:
|
||||||
|
# if element.QT_QLineEdit is not None:
|
||||||
|
# if element.QT_QLineEdit is element.TKEntry.focus_get():
|
||||||
|
# return element
|
||||||
|
|
||||||
|
|
||||||
def AddTrayMenuItem(top_menu, sub_menu_info, element, is_sub_menu=False, skip=False):
|
def AddTrayMenuItem(top_menu, sub_menu_info, element, is_sub_menu=False, skip=False):
|
||||||
|
@ -4594,7 +4677,7 @@ def PackFormIntoFrame(window, containing_frame, toplevel_win):
|
||||||
if element_type == ELEM_TYPE_COLUMN:
|
if element_type == ELEM_TYPE_COLUMN:
|
||||||
# column_widget = QWidget()
|
# column_widget = QWidget()
|
||||||
column_widget = QGroupBox()
|
column_widget = QGroupBox()
|
||||||
element.QT_QGroupBox = column_widget
|
element.Widget = element.QT_QGroupBox = column_widget
|
||||||
# column_widget.setFrameShape(QtWidgets.QFrame.NoFrame)
|
# column_widget.setFrameShape(QtWidgets.QFrame.NoFrame)
|
||||||
style = create_style_from_font(font)
|
style = create_style_from_font(font)
|
||||||
if element.BackgroundColor is not None:
|
if element.BackgroundColor is not None:
|
||||||
|
@ -4620,7 +4703,7 @@ def PackFormIntoFrame(window, containing_frame, toplevel_win):
|
||||||
qt_row_layout.addWidget(column_widget)
|
qt_row_layout.addWidget(column_widget)
|
||||||
# ------------------------- TEXT element ------------------------- #
|
# ------------------------- TEXT element ------------------------- #
|
||||||
elif element_type == ELEM_TYPE_TEXT:
|
elif element_type == ELEM_TYPE_TEXT:
|
||||||
element.QT_Label = qlabel = QLabel(element.DisplayText, toplevel_win.QTWindow)
|
element.Widget = element.QT_Label = qlabel = QLabel(element.DisplayText, toplevel_win.QTWindow)
|
||||||
if element.Justification is not None:
|
if element.Justification is not None:
|
||||||
justification = element.Justification
|
justification = element.Justification
|
||||||
elif toplevel_win.TextJustification is not None:
|
elif toplevel_win.TextJustification is not None:
|
||||||
|
@ -4666,7 +4749,7 @@ def PackFormIntoFrame(window, containing_frame, toplevel_win):
|
||||||
elif element_type == ELEM_TYPE_BUTTON:
|
elif element_type == ELEM_TYPE_BUTTON:
|
||||||
btext = element.ButtonText
|
btext = element.ButtonText
|
||||||
btype = element.BType
|
btype = element.BType
|
||||||
element.QT_QPushButton = QPushButton(btext)
|
element.Widget = element.QT_QPushButton = QPushButton(btext)
|
||||||
style = Style('QPushButton')
|
style = Style('QPushButton')
|
||||||
style.append(create_style_from_font(font))
|
style.append(create_style_from_font(font))
|
||||||
style.add(color=(element.TextColor, COLOR_SYSTEM_DEFAULT))
|
style.add(color=(element.TextColor, COLOR_SYSTEM_DEFAULT))
|
||||||
|
@ -4719,7 +4802,7 @@ def PackFormIntoFrame(window, containing_frame, toplevel_win):
|
||||||
# ------------------------- INPUT element ------------------------- #
|
# ------------------------- INPUT element ------------------------- #
|
||||||
elif element_type == ELEM_TYPE_INPUT_TEXT:
|
elif element_type == ELEM_TYPE_INPUT_TEXT:
|
||||||
default_text = element.DefaultText
|
default_text = element.DefaultText
|
||||||
element.QT_QLineEdit = qlineedit = QLineEdit()
|
element.Widget = element.QT_QLineEdit = qlineedit = QLineEdit()
|
||||||
|
|
||||||
qlineedit.setAcceptDrops(True)
|
qlineedit.setAcceptDrops(True)
|
||||||
qlineedit.dragEnterEvent = element.dragEnterEvent
|
qlineedit.dragEnterEvent = element.dragEnterEvent
|
||||||
|
@ -4769,7 +4852,7 @@ def PackFormIntoFrame(window, containing_frame, toplevel_win):
|
||||||
qt_row_layout.addWidget(element.QT_QLineEdit)
|
qt_row_layout.addWidget(element.QT_QLineEdit)
|
||||||
# ------------------------- COMBO BOX (Drop Down) element ------------------------- #
|
# ------------------------- COMBO BOX (Drop Down) element ------------------------- #
|
||||||
elif element_type == ELEM_TYPE_INPUT_COMBO:
|
elif element_type == ELEM_TYPE_INPUT_COMBO:
|
||||||
element.QT_ComboBox = QComboBox()
|
element.Widget = element.QT_ComboBox = QComboBox()
|
||||||
max_line_len = max([len(str(l)) for l in element.Values])
|
max_line_len = max([len(str(l)) for l in element.Values])
|
||||||
if auto_size_text is False:
|
if auto_size_text is False:
|
||||||
width = element_size[0]
|
width = element_size[0]
|
||||||
|
@ -4822,7 +4905,7 @@ def PackFormIntoFrame(window, containing_frame, toplevel_win):
|
||||||
# ------------------------- LISTBOX element ------------------------- #
|
# ------------------------- LISTBOX element ------------------------- #
|
||||||
elif element_type == ELEM_TYPE_INPUT_LISTBOX:
|
elif element_type == ELEM_TYPE_INPUT_LISTBOX:
|
||||||
max_line_len = max([len(str(l)) for l in element.Values]) if len(element.Values) != 0 else 0
|
max_line_len = max([len(str(l)) for l in element.Values]) if len(element.Values) != 0 else 0
|
||||||
element.QT_ListWidget = QListWidget()
|
element.Widget = element.QT_ListWidget = QListWidget()
|
||||||
style = element.QT_ListWidget.styleSheet()
|
style = element.QT_ListWidget.styleSheet()
|
||||||
# style += """QScrollBar:vertical {
|
# style += """QScrollBar:vertical {
|
||||||
# border: none;
|
# border: none;
|
||||||
|
@ -4872,7 +4955,7 @@ def PackFormIntoFrame(window, containing_frame, toplevel_win):
|
||||||
elif element_type == ELEM_TYPE_INPUT_MULTILINE:
|
elif element_type == ELEM_TYPE_INPUT_MULTILINE:
|
||||||
default_text = element.DefaultText
|
default_text = element.DefaultText
|
||||||
width, height = element_size
|
width, height = element_size
|
||||||
element.QT_TextEdit = QTextEdit()
|
element.Widget = element.QT_TextEdit = QTextEdit()
|
||||||
style = 'QTextEdit {'
|
style = 'QTextEdit {'
|
||||||
style += create_style_from_font(font)
|
style += create_style_from_font(font)
|
||||||
|
|
||||||
|
@ -4885,7 +4968,7 @@ def PackFormIntoFrame(window, containing_frame, toplevel_win):
|
||||||
style += '}'
|
style += '}'
|
||||||
element.QT_TextEdit.setStyleSheet(style)
|
element.QT_TextEdit.setStyleSheet(style)
|
||||||
|
|
||||||
if element.AutoSizeText is False or toplevel_win.AutoSizeButtons is False or element.Size[0] is not None:
|
if element.AutoSizeText is False or element.Size[0] is not None:
|
||||||
if element_size[0] is not None:
|
if element_size[0] is not None:
|
||||||
element.QT_TextEdit.setFixedWidth(element_size[0])
|
element.QT_TextEdit.setFixedWidth(element_size[0])
|
||||||
if element_size[1] is not None:
|
if element_size[1] is not None:
|
||||||
|
@ -4915,7 +4998,7 @@ def PackFormIntoFrame(window, containing_frame, toplevel_win):
|
||||||
elif element_type == ELEM_TYPE_MULTILINE_OUTPUT:
|
elif element_type == ELEM_TYPE_MULTILINE_OUTPUT:
|
||||||
default_text = element.DefaultText
|
default_text = element.DefaultText
|
||||||
width, height = element_size
|
width, height = element_size
|
||||||
element.QT_TextBrowser = QTextBrowser()
|
element.Widget = element.QT_TextBrowser = QTextBrowser()
|
||||||
element.QT_TextBrowser.setDisabled(False)
|
element.QT_TextBrowser.setDisabled(False)
|
||||||
style = 'QTextBrowser {'
|
style = 'QTextBrowser {'
|
||||||
style += create_style_from_font(font)
|
style += create_style_from_font(font)
|
||||||
|
@ -4928,7 +5011,7 @@ def PackFormIntoFrame(window, containing_frame, toplevel_win):
|
||||||
style += '}'
|
style += '}'
|
||||||
element.QT_TextBrowser.setStyleSheet(style)
|
element.QT_TextBrowser.setStyleSheet(style)
|
||||||
|
|
||||||
if element.AutoSizeText is False or toplevel_win.AutoSizeButtons is False or element.Size[0] is not None:
|
if element.AutoSizeText is False or element.Size[0] is not None:
|
||||||
if element_size[0] is not None:
|
if element_size[0] is not None:
|
||||||
element.QT_TextBrowser.setFixedWidth(element_size[0])
|
element.QT_TextBrowser.setFixedWidth(element_size[0])
|
||||||
if element_size[1] is not None:
|
if element_size[1] is not None:
|
||||||
|
@ -4957,7 +5040,7 @@ def PackFormIntoFrame(window, containing_frame, toplevel_win):
|
||||||
style += 'margin: {}px {}px {}px {}px;'.format(*full_element_pad)
|
style += 'margin: {}px {}px {}px {}px;'.format(*full_element_pad)
|
||||||
element.QT_Checkbox.setStyleSheet(style)
|
element.QT_Checkbox.setStyleSheet(style)
|
||||||
|
|
||||||
if element.AutoSizeText is False or toplevel_win.AutoSizeButtons is False or element.Size[0] is not None:
|
if element.AutoSizeText is False or element.Size[0] is not None:
|
||||||
if element_size[0] is not None:
|
if element_size[0] is not None:
|
||||||
element.QT_Checkbox.setFixedWidth(element_size[0])
|
element.QT_Checkbox.setFixedWidth(element_size[0])
|
||||||
if element_size[1] is not None:
|
if element_size[1] is not None:
|
||||||
|
@ -4972,7 +5055,7 @@ def PackFormIntoFrame(window, containing_frame, toplevel_win):
|
||||||
qt_row_layout.addWidget(element.QT_Checkbox)
|
qt_row_layout.addWidget(element.QT_Checkbox)
|
||||||
# ------------------------- PROGRESS BAR element ------------------------- #
|
# ------------------------- PROGRESS BAR element ------------------------- #
|
||||||
elif element_type == ELEM_TYPE_PROGRESS_BAR:
|
elif element_type == ELEM_TYPE_PROGRESS_BAR:
|
||||||
element.QT_QProgressBar = QProgressBar()
|
element.Widget = element.QT_QProgressBar = QProgressBar()
|
||||||
orientation = element.Orientation.lower()[0]
|
orientation = element.Orientation.lower()[0]
|
||||||
if element.Size[0] is not None:
|
if element.Size[0] is not None:
|
||||||
if element_size[0] is not None:
|
if element_size[0] is not None:
|
||||||
|
@ -5007,8 +5090,7 @@ def PackFormIntoFrame(window, containing_frame, toplevel_win):
|
||||||
# ------------------------- INPUT RADIO BUTTON element ------------------------- #
|
# ------------------------- INPUT RADIO BUTTON element ------------------------- #
|
||||||
elif element_type == ELEM_TYPE_INPUT_RADIO:
|
elif element_type == ELEM_TYPE_INPUT_RADIO:
|
||||||
default_value = element.InitialState
|
default_value = element.InitialState
|
||||||
ID = element.GroupID
|
element.Widget = qradio = QRadioButton(element.Text)
|
||||||
qradio = QRadioButton(element.Text)
|
|
||||||
element.QT_Radio_Button = qradio
|
element.QT_Radio_Button = qradio
|
||||||
if element.Disabled:
|
if element.Disabled:
|
||||||
element.QT_Radio_Button.setDisabled(True)
|
element.QT_Radio_Button.setDisabled(True)
|
||||||
|
@ -5022,7 +5104,7 @@ def PackFormIntoFrame(window, containing_frame, toplevel_win):
|
||||||
style += 'margin: {}px {}px {}px {}px;'.format(*full_element_pad)
|
style += 'margin: {}px {}px {}px {}px;'.format(*full_element_pad)
|
||||||
element.QT_Radio_Button.setStyleSheet(style)
|
element.QT_Radio_Button.setStyleSheet(style)
|
||||||
|
|
||||||
if element.AutoSizeText is False or toplevel_win.AutoSizeButtons is False or element.Size[0] is not None:
|
if element.AutoSizeText is False or element.Size[0] is not None:
|
||||||
if element_size[0] is not None:
|
if element_size[0] is not None:
|
||||||
element.QT_Radio_Button.setFixedWidth(element_size[0])
|
element.QT_Radio_Button.setFixedWidth(element_size[0])
|
||||||
if element_size[1] is not None:
|
if element_size[1] is not None:
|
||||||
|
@ -5045,7 +5127,8 @@ def PackFormIntoFrame(window, containing_frame, toplevel_win):
|
||||||
# ------------------------- INPUT SPIN Box element ------------------------- #
|
# ------------------------- INPUT SPIN Box element ------------------------- #
|
||||||
elif element_type == ELEM_TYPE_INPUT_SPIN:
|
elif element_type == ELEM_TYPE_INPUT_SPIN:
|
||||||
# element.QT_Spinner = QSpinBox()
|
# element.QT_Spinner = QSpinBox()
|
||||||
element.QT_Spinner = Spin.StringBox(element.Values)
|
element = element # type: Spin
|
||||||
|
element.Widget = element.QT_Spinner = Spin.StringBox(element.Values)
|
||||||
if element.DefaultValue is not None: # try to set the default value without crashing on error
|
if element.DefaultValue is not None: # try to set the default value without crashing on error
|
||||||
try:
|
try:
|
||||||
element.QT_Spinner.setValue(element.QT_Spinner.valueFromText(element.DefaultValue))
|
element.QT_Spinner.setValue(element.QT_Spinner.valueFromText(element.DefaultValue))
|
||||||
|
@ -5079,7 +5162,7 @@ def PackFormIntoFrame(window, containing_frame, toplevel_win):
|
||||||
qt_row_layout.addWidget(element.QT_Spinner)
|
qt_row_layout.addWidget(element.QT_Spinner)
|
||||||
# ------------------------- OUTPUT element ------------------------- #
|
# ------------------------- OUTPUT element ------------------------- #
|
||||||
elif element_type == ELEM_TYPE_OUTPUT:
|
elif element_type == ELEM_TYPE_OUTPUT:
|
||||||
element.QT_TextBrowser = QTextBrowser()
|
element.Widget = element.QT_TextBrowser = QTextBrowser()
|
||||||
element.QT_TextBrowser.setDisabled(False)
|
element.QT_TextBrowser.setDisabled(False)
|
||||||
style = 'QTextBrowser {'
|
style = 'QTextBrowser {'
|
||||||
style += create_style_from_font(font)
|
style += create_style_from_font(font)
|
||||||
|
@ -5098,7 +5181,7 @@ def PackFormIntoFrame(window, containing_frame, toplevel_win):
|
||||||
style += '}'
|
style += '}'
|
||||||
element.QT_TextBrowser.setStyleSheet(style)
|
element.QT_TextBrowser.setStyleSheet(style)
|
||||||
|
|
||||||
if element.AutoSizeText is False or toplevel_win.AutoSizeButtons is False or element.Size[0] is not None:
|
if element.AutoSizeText is False or element.Size[0] is not None:
|
||||||
if element_size[0] is not None:
|
if element_size[0] is not None:
|
||||||
element.QT_TextBrowser.setFixedWidth(element_size[0])
|
element.QT_TextBrowser.setFixedWidth(element_size[0])
|
||||||
if element_size[1] is not None:
|
if element_size[1] is not None:
|
||||||
|
@ -5150,18 +5233,23 @@ def PackFormIntoFrame(window, containing_frame, toplevel_win):
|
||||||
width, height = element_size
|
width, height = element_size
|
||||||
# ------------------------- Graph element ------------------------- #
|
# ------------------------- Graph element ------------------------- #
|
||||||
elif element_type == ELEM_TYPE_GRAPH:
|
elif element_type == ELEM_TYPE_GRAPH:
|
||||||
|
element = element # type: Graph
|
||||||
width, height = element_size
|
width, height = element_size
|
||||||
element.QT_QGraphicsView = qgraphicsview = QGraphicsView()
|
print(f'Graph element size = {element_size}')
|
||||||
|
element.Widget = element.QT_QGraphicsView = qgraphicsview = QGraphicsView()
|
||||||
# element.QT_QGraphicsView.setGeometry(0,0,element.CanvasSize[0],element.CanvasSize[1])
|
# element.QT_QGraphicsView.setGeometry(0,0,element.CanvasSize[0],element.CanvasSize[1])
|
||||||
|
print(f'Graph Canvas size = {element.CanvasSize}')
|
||||||
|
|
||||||
element.QT_QGraphicsScene = QGraphicsScene()
|
element.QT_QGraphicsScene = QGraphicsScene()
|
||||||
element.QT_QGraphicsScene.setSceneRect(0,0,element.CanvasSize[0],element.CanvasSize[1])
|
element.QT_QGraphicsScene.setSceneRect(0,0,element.CanvasSize[0],element.CanvasSize[1])
|
||||||
element.QT_QGraphicsView.setScene(element.QT_QGraphicsScene)
|
element.QT_QGraphicsView.setScene(element.QT_QGraphicsScene)
|
||||||
style = ''
|
|
||||||
style += 'border: 0px solid gray; '
|
|
||||||
style += 'margin: {}px {}px {}px {}px;'.format(*full_element_pad)
|
|
||||||
|
|
||||||
# print(style)
|
style = Style('QGraphicsView')
|
||||||
element.QT_QGraphicsView.setStyleSheet(style)
|
style.add(background_color=(element.BackgroundColor, COLOR_SYSTEM_DEFAULT))
|
||||||
|
style.add(margin='{}px {}px {}px {}px'.format(*full_element_pad))
|
||||||
|
style.add(border='{}px solid gray '.format(border_depth))
|
||||||
|
print(f'style content = {style.content}')
|
||||||
|
element.QT_QGraphicsView.setStyleSheet(style.content)
|
||||||
|
|
||||||
qgraphicsview.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
|
qgraphicsview.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
|
||||||
qgraphicsview.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
|
qgraphicsview.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
|
||||||
|
@ -5174,7 +5262,7 @@ def PackFormIntoFrame(window, containing_frame, toplevel_win):
|
||||||
# ------------------------- MENUBAR element ------------------------- #
|
# ------------------------- MENUBAR element ------------------------- #
|
||||||
elif element_type == ELEM_TYPE_MENUBAR:
|
elif element_type == ELEM_TYPE_MENUBAR:
|
||||||
menu_def = element.MenuDefinition
|
menu_def = element.MenuDefinition
|
||||||
element.QT_QMenuBar = QMenuBar(toplevel_win.QT_QMainWindow)
|
element.Widget = element.QT_QMenuBar = QMenuBar(toplevel_win.QT_QMainWindow)
|
||||||
|
|
||||||
for menu_entry in menu_def:
|
for menu_entry in menu_def:
|
||||||
# print(f'Adding a Menubar ENTRY {menu_entry}')
|
# print(f'Adding a Menubar ENTRY {menu_entry}')
|
||||||
|
@ -5192,7 +5280,7 @@ def PackFormIntoFrame(window, containing_frame, toplevel_win):
|
||||||
# ------------------------- BUTTONMENU element ------------------------- #
|
# ------------------------- BUTTONMENU element ------------------------- #
|
||||||
elif element_type == ELEM_TYPE_BUTTONMENU:
|
elif element_type == ELEM_TYPE_BUTTONMENU:
|
||||||
btext = element.ButtonText
|
btext = element.ButtonText
|
||||||
element.QT_QPushButton = QPushButton(btext)
|
element.Widget = element.QT_QPushButton = QPushButton(btext)
|
||||||
style = create_style_from_font(font)
|
style = create_style_from_font(font)
|
||||||
if element.TextColor is not None and element.TextColor != COLOR_SYSTEM_DEFAULT:
|
if element.TextColor is not None and element.TextColor != COLOR_SYSTEM_DEFAULT:
|
||||||
style += 'color: %s;' % element.TextColor
|
style += 'color: %s;' % element.TextColor
|
||||||
|
@ -5237,7 +5325,7 @@ def PackFormIntoFrame(window, containing_frame, toplevel_win):
|
||||||
qt_row_layout.addWidget(element.QT_QPushButton)
|
qt_row_layout.addWidget(element.QT_QPushButton)
|
||||||
# ------------------------- Frame element ------------------------- #
|
# ------------------------- Frame element ------------------------- #
|
||||||
elif element_type == ELEM_TYPE_FRAME:
|
elif element_type == ELEM_TYPE_FRAME:
|
||||||
column_widget = QGroupBox()
|
element.Widget = column_widget = QGroupBox()
|
||||||
element.QT_QGroupBox = column_widget
|
element.QT_QGroupBox = column_widget
|
||||||
style = create_style_from_font(font)
|
style = create_style_from_font(font)
|
||||||
if element.TextColor is not None:
|
if element.TextColor is not None:
|
||||||
|
@ -5262,7 +5350,7 @@ def PackFormIntoFrame(window, containing_frame, toplevel_win):
|
||||||
qt_row_layout.addWidget(column_widget)
|
qt_row_layout.addWidget(column_widget)
|
||||||
# ------------------------- Tab element ------------------------- #
|
# ------------------------- Tab element ------------------------- #
|
||||||
elif element_type == ELEM_TYPE_TAB:
|
elif element_type == ELEM_TYPE_TAB:
|
||||||
tab_widget = QWidget()
|
element.Widget = tab_widget = QWidget()
|
||||||
element.QT_QWidget = tab_widget
|
element.QT_QWidget = tab_widget
|
||||||
# tab_widget.setFrameShape(QtWidgets.QFrame.NoFrame)
|
# tab_widget.setFrameShape(QtWidgets.QFrame.NoFrame)
|
||||||
style = create_style_from_font(font)
|
style = create_style_from_font(font)
|
||||||
|
@ -5296,7 +5384,7 @@ def PackFormIntoFrame(window, containing_frame, toplevel_win):
|
||||||
# ------------------------- TabGroup element ------------------------- #
|
# ------------------------- TabGroup element ------------------------- #
|
||||||
elif element_type == ELEM_TYPE_TAB_GROUP:
|
elif element_type == ELEM_TYPE_TAB_GROUP:
|
||||||
|
|
||||||
element.QT_QTabWidget = qtab =QTabWidget()
|
element.Widget = element.QT_QTabWidget = qtab =QTabWidget()
|
||||||
|
|
||||||
style = qtab.styleSheet()
|
style = qtab.styleSheet()
|
||||||
if element.SelectedTitleColor not in (None, COLOR_SYSTEM_DEFAULT):
|
if element.SelectedTitleColor not in (None, COLOR_SYSTEM_DEFAULT):
|
||||||
|
@ -5317,7 +5405,7 @@ def PackFormIntoFrame(window, containing_frame, toplevel_win):
|
||||||
element.QT_QTabWidget.currentChanged.connect(element.QtCallbackStateChanged)
|
element.QT_QTabWidget.currentChanged.connect(element.QtCallbackStateChanged)
|
||||||
# ------------------------- SLIDER element ------------------------- #
|
# ------------------------- SLIDER element ------------------------- #
|
||||||
elif element_type == ELEM_TYPE_INPUT_SLIDER:
|
elif element_type == ELEM_TYPE_INPUT_SLIDER:
|
||||||
element.QT_Slider = QSlider()
|
element.Widget = element.QT_Slider = QSlider()
|
||||||
if element.Orientation.startswith('h'):
|
if element.Orientation.startswith('h'):
|
||||||
element.QT_Slider.setOrientation(Qt.Horizontal)
|
element.QT_Slider.setOrientation(Qt.Horizontal)
|
||||||
else:
|
else:
|
||||||
|
@ -5369,7 +5457,7 @@ def PackFormIntoFrame(window, containing_frame, toplevel_win):
|
||||||
qt_row_layout.addWidget(element.QT_Slider)
|
qt_row_layout.addWidget(element.QT_Slider)
|
||||||
# ------------------------- DIAL element ------------------------- #
|
# ------------------------- DIAL element ------------------------- #
|
||||||
elif element_type == ELEM_TYPE_INPUT_DIAL:
|
elif element_type == ELEM_TYPE_INPUT_DIAL:
|
||||||
element.QT_Dial = qdial = QDial()
|
element.Widget = element.QT_Dial = qdial = QDial()
|
||||||
|
|
||||||
style = create_style_from_font(font)
|
style = create_style_from_font(font)
|
||||||
if element.BackgroundColor is not None:
|
if element.BackgroundColor is not None:
|
||||||
|
@ -5405,10 +5493,11 @@ def PackFormIntoFrame(window, containing_frame, toplevel_win):
|
||||||
qt_row_layout.addWidget(element.QT_Dial)
|
qt_row_layout.addWidget(element.QT_Dial)
|
||||||
# ------------------------- Stretch element ------------------------- #
|
# ------------------------- Stretch element ------------------------- #
|
||||||
elif element_type == ELEM_TYPE_STRETCH:
|
elif element_type == ELEM_TYPE_STRETCH:
|
||||||
qt_row_layout.addStretch(1)
|
element.Widget = qt_row_layout.addStretch(1)
|
||||||
# ------------------------- TABLE element ------------------------- #
|
# ------------------------- TABLE element ------------------------- #
|
||||||
elif element_type == ELEM_TYPE_TABLE:
|
elif element_type == ELEM_TYPE_TABLE:
|
||||||
element.QT_TableWidget = Table.QTTableWidget(toplevel_win.ReturnKeyboardEvents, toplevel_win)
|
element = element # type: Table
|
||||||
|
element.Widget = element.QT_TableWidget = Table.QTTableWidget(toplevel_win.ReturnKeyboardEvents, toplevel_win)
|
||||||
if element.NumRows is not None:
|
if element.NumRows is not None:
|
||||||
element.QT_TableWidget.setFixedHeight(element.NumRows*35+25)
|
element.QT_TableWidget.setFixedHeight(element.NumRows*35+25)
|
||||||
# element.QT_TableWidget = QTableWidget()
|
# element.QT_TableWidget = QTableWidget()
|
||||||
|
@ -5438,17 +5527,20 @@ def PackFormIntoFrame(window, containing_frame, toplevel_win):
|
||||||
for colnum, columns in enumerate(rows):
|
for colnum, columns in enumerate(rows):
|
||||||
element.QT_TableWidget.setItem(rownum, colnum, QTableWidgetItem(element.Values[rownum][colnum]))
|
element.QT_TableWidget.setItem(rownum, colnum, QTableWidgetItem(element.Values[rownum][colnum]))
|
||||||
|
|
||||||
element.QT_TableWidget.installEventFilter(element.QT_TableWidget)
|
if element.ColumnHeadings is not None:
|
||||||
|
element.QT_TableWidget.setHorizontalHeaderLabels(element.ColumnHeadings)
|
||||||
|
|
||||||
|
element.QT_TableWidget.installEventFilter(element.QT_TableWidget)
|
||||||
element.QT_TableWidget.setSizeAdjustPolicy(QtWidgets.QAbstractScrollArea.AdjustToContents)
|
element.QT_TableWidget.setSizeAdjustPolicy(QtWidgets.QAbstractScrollArea.AdjustToContents)
|
||||||
if element.Tooltip:
|
if element.Tooltip:
|
||||||
element.QT_TableWidget.setToolTip(element.Tooltip)
|
element.QT_TableWidget.setToolTip(element.Tooltip)
|
||||||
if not element.Visible:
|
if not element.Visible:
|
||||||
element.QT_TableWidget.setVisible(False)
|
element.QT_TableWidget.setVisible(False)
|
||||||
|
|
||||||
qt_row_layout.addWidget(element.QT_TableWidget)
|
qt_row_layout.addWidget(element.QT_TableWidget)
|
||||||
# ------------------------- Tree element ------------------------- #
|
# ------------------------- Tree element ------------------------- #
|
||||||
elif element_type == ELEM_TYPE_TREE:
|
elif element_type == ELEM_TYPE_TREE:
|
||||||
element.QT_QTreeWidget = QTreeWidget()
|
element.Widget = element.QT_QTreeWidget = QTreeWidget()
|
||||||
if element_size != (None, None):
|
if element_size != (None, None):
|
||||||
element.QT_QTreeWidget.setFixedWidth(element_size[0])
|
element.QT_QTreeWidget.setFixedWidth(element_size[0])
|
||||||
element.QT_QTreeWidget.setFixedHeight(element_size[1])
|
element.QT_QTreeWidget.setFixedHeight(element_size[1])
|
||||||
|
@ -5523,7 +5615,8 @@ def PackFormIntoFrame(window, containing_frame, toplevel_win):
|
||||||
qt_row_layout.addWidget(element.QT_QTreeWidget)
|
qt_row_layout.addWidget(element.QT_QTreeWidget)
|
||||||
# ------------------------- Separator element ------------------------- #
|
# ------------------------- Separator element ------------------------- #
|
||||||
elif element_type == ELEM_TYPE_SEPARATOR:
|
elif element_type == ELEM_TYPE_SEPARATOR:
|
||||||
element.QT_Label = qlabel = QLabel('', toplevel_win.QTWindow)
|
element = element # type: HorizontalSeparator
|
||||||
|
element.Widget = element.QT_Label = qlabel = QLabel('', toplevel_win.QTWindow)
|
||||||
if not auto_size_text:
|
if not auto_size_text:
|
||||||
if element_size[0] is not None:
|
if element_size[0] is not None:
|
||||||
element.QT_Label.setFixedWidth(element_size[0])
|
element.QT_Label.setFixedWidth(element_size[0])
|
||||||
|
@ -7052,21 +7145,21 @@ def PopupGetFolder(message, title=None, default_path='', no_window=False, size=(
|
||||||
return folder_name
|
return folder_name
|
||||||
|
|
||||||
layout = [[Text(message, auto_size_text=True, text_color=text_color, background_color=background_color)],
|
layout = [[Text(message, auto_size_text=True, text_color=text_color, background_color=background_color)],
|
||||||
[InputText(default_text=default_path, size=size), FolderBrowse(initial_folder=initial_folder)],
|
[InputText(default_text=default_path, size=size, key='_INPUT_'), FolderBrowse(initial_folder=initial_folder)],
|
||||||
[CloseButton('Ok', size=(60, 20), bind_return_key=True), CloseButton('Cancel', size=(60, 20))]]
|
[CloseButton('Ok', size=(60, 20), bind_return_key=True), CloseButton('Cancel', size=(60, 20))]]
|
||||||
|
|
||||||
_title = title if title is not None else message
|
_title = title if title is not None else message
|
||||||
window = Window(title=_title, icon=icon, auto_size_text=True, button_color=button_color,
|
window = Window(title=_title, layout=layout, icon=icon, auto_size_text=True, button_color=button_color,
|
||||||
background_color=background_color,
|
background_color=background_color,
|
||||||
font=font, no_titlebar=no_titlebar, grab_anywhere=grab_anywhere, keep_on_top=keep_on_top,
|
font=font, no_titlebar=no_titlebar, grab_anywhere=grab_anywhere, keep_on_top=keep_on_top,
|
||||||
location=location)
|
location=location)
|
||||||
|
|
||||||
(button, input_values) = window.Layout(layout).Read()
|
button, values = window.Read()
|
||||||
|
|
||||||
if button != 'Ok':
|
if button != 'Ok':
|
||||||
return None
|
return None
|
||||||
else:
|
else:
|
||||||
path = input_values[0]
|
path = values['_INPUT_']
|
||||||
return path
|
return path
|
||||||
|
|
||||||
|
|
||||||
|
@ -7114,21 +7207,21 @@ def PopupGetFile(message, title=None, default_path='', default_extension='', sav
|
||||||
file_types=file_types, initial_folder=initial_folder)
|
file_types=file_types, initial_folder=initial_folder)
|
||||||
|
|
||||||
layout = [[Text(message, auto_size_text=True, text_color=text_color, background_color=background_color)],
|
layout = [[Text(message, auto_size_text=True, text_color=text_color, background_color=background_color)],
|
||||||
[InputText(default_text=default_path, size=(30,1)), browse_button],
|
[InputText(default_text=default_path, size=(30,1), key='_INPUT_'), browse_button],
|
||||||
[CButton('Ok', size=(60, 20), bind_return_key=True), CButton('Cancel', size=(60, 20))]]
|
[CButton('Ok', size=(60, 20), bind_return_key=True), CButton('Cancel', size=(60, 20))]]
|
||||||
|
|
||||||
_title = title if title is not None else message
|
_title = title if title is not None else message
|
||||||
|
|
||||||
window = Window(title=_title, icon=icon, auto_size_text=True, button_color=button_color, font=font,
|
window = Window(title=_title, layout=layout, icon=icon, auto_size_text=True, button_color=button_color, font=font,
|
||||||
background_color=background_color,
|
background_color=background_color,
|
||||||
no_titlebar=no_titlebar, grab_anywhere=grab_anywhere, keep_on_top=keep_on_top, location=location)
|
no_titlebar=no_titlebar, grab_anywhere=grab_anywhere, keep_on_top=keep_on_top, location=location)
|
||||||
|
|
||||||
(button, input_values) = window.Layout(layout).Read()
|
button, values = window.Read()
|
||||||
# window.Close()
|
# window.Close()
|
||||||
if button != 'Ok':
|
if button != 'Ok':
|
||||||
return None
|
return None
|
||||||
else:
|
else:
|
||||||
path = input_values[0]
|
path = values['_INPUT_']
|
||||||
return path
|
return path
|
||||||
|
|
||||||
|
|
||||||
|
@ -7161,16 +7254,16 @@ def PopupGetText(message, title=None, default_text='', password_char='', size=(N
|
||||||
|
|
||||||
_title = title if title is not None else message
|
_title = title if title is not None else message
|
||||||
|
|
||||||
window = Window(title=_title, icon=icon, auto_size_text=True, button_color=button_color, no_titlebar=no_titlebar,
|
window = Window(title=_title, layout=layout, icon=icon, auto_size_text=True, button_color=button_color, no_titlebar=no_titlebar,
|
||||||
background_color=background_color, grab_anywhere=grab_anywhere, keep_on_top=keep_on_top,
|
background_color=background_color, grab_anywhere=grab_anywhere, keep_on_top=keep_on_top,
|
||||||
location=location)
|
location=location)
|
||||||
|
|
||||||
(button, input_values) = window.Layout(layout).Read()
|
button, values = window.Read()
|
||||||
|
|
||||||
if button != 'Ok':
|
if button != 'Ok':
|
||||||
return None
|
return None
|
||||||
else:
|
else:
|
||||||
return input_values[0]
|
return values['_INPUT_']
|
||||||
|
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
|
@ -7198,7 +7291,7 @@ def main():
|
||||||
treedata.Insert('_C_', i, i, [])
|
treedata.Insert('_C_', i, i, [])
|
||||||
|
|
||||||
frame1 = [
|
frame1 = [
|
||||||
[Input('Input Text', do_not_clear=True, size=(250, 35), tooltip='Input'), Stretch()],
|
[Input('Input Text', do_not_clear=True, size=(250, 35), tooltip='Input'), FileBrowse(), Stretch()],
|
||||||
[Multiline(size=(250, 75), do_not_clear=True, default_text='Multiline Input', tooltip='Multiline input'),
|
[Multiline(size=(250, 75), do_not_clear=True, default_text='Multiline Input', tooltip='Multiline input'),
|
||||||
MultilineOutput(size=(250, 75), default_text='Multiline Output', tooltip='Multiline output')],
|
MultilineOutput(size=(250, 75), default_text='Multiline Output', tooltip='Multiline output')],
|
||||||
]
|
]
|
||||||
|
@ -7223,7 +7316,7 @@ def main():
|
||||||
matrix = [[str(x * y) for x in range(4)] for y in range(8)]
|
matrix = [[str(x * y) for x in range(4)] for y in range(8)]
|
||||||
|
|
||||||
frame5 = [
|
frame5 = [
|
||||||
[Table(values=matrix, max_col_width=25,
|
[Table(values=matrix, max_col_width=25, headings=('aaa', 'bbb', 'ccc', 'ddd'),
|
||||||
auto_size_columns=True, display_row_numbers=True, change_submits=False, bind_return_key=True,
|
auto_size_columns=True, display_row_numbers=True, change_submits=False, bind_return_key=True,
|
||||||
justification='right', num_rows=6, alternating_row_color='lightblue', key='_table_',
|
justification='right', num_rows=6, alternating_row_color='lightblue', key='_table_',
|
||||||
text_color='black', tooltip='Table'),
|
text_color='black', tooltip='Table'),
|
||||||
|
|
Loading…
Reference in New Issue