Merge pull request #1858 from PySimpleGUI/Dev-latest
LOTS of new error checks. Warning if trying to "re-use" layout, All E…
This commit is contained in:
commit
c30afc1749
100
PySimpleGUI.py
100
PySimpleGUI.py
|
@ -824,7 +824,9 @@ class InputText(Element):
|
|||
:param select: (bool) if True, then the text will be selected
|
||||
:param visible: (bool) change visibility of element
|
||||
"""
|
||||
|
||||
if self.Widget is None:
|
||||
warnings.warn('You cannot Update element with key = {} until the window has been Read or Finalized'.format(self.Key), UserWarning)
|
||||
return
|
||||
if disabled is True:
|
||||
self.TKEntry['state'] = 'readonly'
|
||||
elif disabled is False:
|
||||
|
@ -918,6 +920,10 @@ class Combo(Element):
|
|||
:param font: Union[str, Tuple[str, int]] specifies the font family, size, etc
|
||||
:param visible: (bool) control visibility of element
|
||||
"""
|
||||
|
||||
if self.Widget is None:
|
||||
warnings.warn('You cannot Update element with key = {} until the window has been Read or Finalized'.format(self.Key), UserWarning)
|
||||
return
|
||||
if values is not None:
|
||||
try:
|
||||
self.TKCombo['values'] = values
|
||||
|
@ -1026,6 +1032,10 @@ class OptionMenu(Element):
|
|||
:param disabled: (bool) disable or enable state of the element
|
||||
:param visible: (bool) control visibility of element
|
||||
"""
|
||||
|
||||
if self.Widget is None:
|
||||
warnings.warn('You cannot Update element with key = {} until the window has been Read or Finalized'.format(self.Key), UserWarning)
|
||||
return
|
||||
if values is not None:
|
||||
self.Values = values
|
||||
self.TKOptionMenu['menu'].delete(0, 'end')
|
||||
|
@ -1134,6 +1144,9 @@ class Listbox(Element):
|
|||
:param visible: (bool) control visibility of element
|
||||
"""
|
||||
|
||||
if self.Widget is None:
|
||||
warnings.warn('You cannot Update element with key = {} until the window has been Read or Finalized'.format(self.Key), UserWarning)
|
||||
return
|
||||
if disabled == True:
|
||||
self.TKListbox.configure(state='disabled')
|
||||
elif disabled == False:
|
||||
|
@ -1255,6 +1268,9 @@ class Radio(Element):
|
|||
:param visible: (bool) control visibility of element
|
||||
"""
|
||||
|
||||
if self.Widget is None:
|
||||
warnings.warn('You cannot Update element with key = {} until the window has been Read or Finalized'.format(self.Key), UserWarning)
|
||||
return
|
||||
if value is not None:
|
||||
try:
|
||||
self.TKIntVar.set(self.EncodedRadioValue)
|
||||
|
@ -1351,6 +1367,9 @@ class Checkbox(Element):
|
|||
:param visible: (bool) control visibility of element
|
||||
"""
|
||||
|
||||
if self.Widget is None:
|
||||
warnings.warn('You cannot Update element with key = {} until the window has been Read or Finalized'.format(self.Key), UserWarning)
|
||||
return
|
||||
if value is not None:
|
||||
try:
|
||||
self.TKIntVar.set(value)
|
||||
|
@ -1430,6 +1449,9 @@ class Spin(Element):
|
|||
:param visible: (bool) control visibility of element
|
||||
"""
|
||||
|
||||
if self.Widget is None:
|
||||
warnings.warn('You cannot Update element with key = {} until the window has been Read or Finalized'.format(self.Key), UserWarning)
|
||||
return
|
||||
if values != None:
|
||||
old_value = self.TKStringVar.get()
|
||||
self.Values = values
|
||||
|
@ -1548,6 +1570,9 @@ class Multiline(Element):
|
|||
:param autoscroll: (bool) if True then contents of element are scrolled down when new text is added to the end
|
||||
"""
|
||||
|
||||
if self.Widget is None:
|
||||
warnings.warn('You cannot Update element with key = {} until the window has been Read or Finalized'.format(self.Key), UserWarning)
|
||||
return
|
||||
if autoscroll is not None:
|
||||
self.Autoscroll = autoscroll
|
||||
if value is not None:
|
||||
|
@ -1651,6 +1676,9 @@ class Text(Element):
|
|||
:param visible: (bool) set visibility state of the element
|
||||
"""
|
||||
|
||||
if self.Widget is None:
|
||||
warnings.warn('You cannot Update element with key = {} until the window has been Read or Finalized'.format(self.Key), UserWarning)
|
||||
return
|
||||
if value is not None:
|
||||
self.DisplayText = value
|
||||
stringvar = self.TKStringVar
|
||||
|
@ -1731,6 +1759,9 @@ class StatusBar(Element):
|
|||
:param visible: (bool) set visibility state of the element
|
||||
"""
|
||||
|
||||
if self.Widget is None:
|
||||
warnings.warn('You cannot Update element with key = {} until the window has been Read or Finalized'.format(self.Key), UserWarning)
|
||||
return
|
||||
if value is not None:
|
||||
self.DisplayText = value
|
||||
stringvar = self.TKStringVar
|
||||
|
@ -1951,7 +1982,9 @@ class Output(Element):
|
|||
:param value: (str) string that will replace current contents of the output area
|
||||
:param visible: (bool) control visibility of element
|
||||
"""
|
||||
|
||||
if self.Widget is None:
|
||||
warnings.warn('You cannot Update element with key = {} until the window has been Read or Finalized'.format(self.Key), UserWarning)
|
||||
return
|
||||
if value is not None:
|
||||
self._TKOut.output.delete('1.0', tk.END)
|
||||
self._TKOut.output.insert(tk.END, value)
|
||||
|
@ -2214,6 +2247,9 @@ class Button(Element):
|
|||
:param image_size: Tuple[int, int] Size of the image in pixels (width, height)
|
||||
"""
|
||||
|
||||
if self.Widget is None:
|
||||
warnings.warn('You cannot Update element with key = {} until the window has been Read or Finalized'.format(self.Key), UserWarning)
|
||||
return
|
||||
try:
|
||||
if text is not None:
|
||||
self.TKButton.configure(text=text)
|
||||
|
@ -2365,6 +2401,9 @@ class ButtonMenu(Element):
|
|||
:param visible: (bool) control visibility of element
|
||||
"""
|
||||
|
||||
if self.Widget is None:
|
||||
warnings.warn('You cannot Update element with key = {} until the window has been Read or Finalized'.format(self.Key), UserWarning)
|
||||
return
|
||||
self.MenuDefinition = menu_definition
|
||||
if menu_definition is not None:
|
||||
self.TKMenu = tk.Menu(self.TKButtonMenu, tearoff=self.Tearoff) # create the menubar
|
||||
|
@ -2444,7 +2483,9 @@ class ProgressBar(Element):
|
|||
|
||||
:param visible: (bool) control visibility of element
|
||||
"""
|
||||
|
||||
if self.Widget is None:
|
||||
warnings.warn('You cannot Update element with key = {} until the window has been Read or Finalized'.format(self.Key), UserWarning)
|
||||
return
|
||||
if visible is False:
|
||||
self.TKProgressBar.TKProgressBarForReal.pack_forget()
|
||||
elif visible is True:
|
||||
|
@ -2507,6 +2548,9 @@ class Image(Element):
|
|||
:param visible: (bool) control visibility of element
|
||||
"""
|
||||
|
||||
if self.Widget is None:
|
||||
warnings.warn('You cannot Update element with key = {} until the window has been Read or Finalized'.format(self.Key), UserWarning)
|
||||
return
|
||||
if filename is not None:
|
||||
image = tk.PhotoImage(file=filename)
|
||||
elif data is not None:
|
||||
|
@ -3238,7 +3282,9 @@ class Frame(Element):
|
|||
|
||||
:param visible: (bool) control visibility of element
|
||||
"""
|
||||
|
||||
if self.Widget is None:
|
||||
warnings.warn('You cannot Update element with key = {} until the window has been Read or Finalized'.format(self.Key), UserWarning)
|
||||
return
|
||||
if visible is False:
|
||||
self.TKFrame.pack_forget()
|
||||
elif visible is True:
|
||||
|
@ -3362,7 +3408,9 @@ class Tab(Element):
|
|||
:param disabled: (bool) disable or enable state of the element
|
||||
:param visible: (bool) control visibility of element
|
||||
"""
|
||||
|
||||
if self.Widget is None:
|
||||
warnings.warn('You cannot Update element with key = {} until the window has been Read or Finalized'.format(self.Key), UserWarning)
|
||||
return
|
||||
if disabled is None:
|
||||
return
|
||||
self.Disabled = disabled
|
||||
|
@ -3613,7 +3661,9 @@ class Slider(Element):
|
|||
:param visible: (bool) control visibility of element
|
||||
|
||||
"""
|
||||
|
||||
if self.Widget is None:
|
||||
warnings.warn('You cannot Update element with key = {} until the window has been Read or Finalized'.format(self.Key), UserWarning)
|
||||
return
|
||||
if value is not None:
|
||||
try:
|
||||
self.TKIntVar.set(value)
|
||||
|
@ -3886,7 +3936,9 @@ class Column(Element):
|
|||
|
||||
:param visible: (bool) control visibility of element
|
||||
"""
|
||||
|
||||
if self.Widget is None:
|
||||
warnings.warn('You cannot Update element with key = {} until the window has been Read or Finalized'.format(self.Key), UserWarning)
|
||||
return
|
||||
if visible is False:
|
||||
if self.TKColFrame:
|
||||
self.TKColFrame.pack_forget()
|
||||
|
@ -3963,7 +4015,9 @@ class Pane(Element):
|
|||
|
||||
:param visible: (bool) control visibility of element
|
||||
"""
|
||||
|
||||
if self.Widget is None:
|
||||
warnings.warn('You cannot Update element with key = {} until the window has been Read or Finalized'.format(self.Key), UserWarning)
|
||||
return
|
||||
if visible is False:
|
||||
self.PanedWindow.pack_forget()
|
||||
elif visible is True:
|
||||
|
@ -4308,7 +4362,9 @@ class Menu(Element):
|
|||
:param menu_definition: List[List[Tuple[str, List[str]]]
|
||||
:param visible: (bool) control visibility of element
|
||||
"""
|
||||
|
||||
if self.Widget is None:
|
||||
warnings.warn('You cannot Update element with key = {} until the window has been Read or Finalized'.format(self.Key), UserWarning)
|
||||
return
|
||||
if menu_definition is not None:
|
||||
self.MenuDefinition = menu_definition
|
||||
self.TKMenu = tk.Menu(self.ParentForm.TKroot, tearoff=self.Tearoff) # create the menubar
|
||||
|
@ -4431,7 +4487,9 @@ class Table(Element):
|
|||
:param alternating_row_color: (str) the color to make every other row
|
||||
:param row_colors: List[Union[Tuple[int, str], Tuple[Int, str, str]] list of tuples of (row, background color) OR (row, foreground color, background color). Changes the colors of listed rows to the color(s) provided (note the optional foreground color)
|
||||
"""
|
||||
|
||||
if self.Widget is None:
|
||||
warnings.warn('You cannot Update element with key = {} until the window has been Read or Finalized'.format(self.Key), UserWarning)
|
||||
return
|
||||
if values is not None:
|
||||
for id in self.tree_ids:
|
||||
self.TKTreeview.item(id, tags=())
|
||||
|
@ -4655,7 +4713,9 @@ class Tree(Element):
|
|||
:param icon: Union[bytes, str] can be either a base64 icon or a filename for the icon
|
||||
:param visible: (bool) control visibility of element
|
||||
"""
|
||||
|
||||
if self.Widget is None:
|
||||
warnings.warn('You cannot Update element with key = {} until the window has been Read or Finalized'.format(self.Key), UserWarning)
|
||||
return
|
||||
if values is not None:
|
||||
children = self.TKTreeview.get_children()
|
||||
for i in children:
|
||||
|
@ -5022,10 +5082,18 @@ class Window:
|
|||
'This means you are missing () from your layout',
|
||||
'The offensive list is:',
|
||||
element,
|
||||
'This item will be stripped from your layout'
|
||||
)
|
||||
'This item will be stripped from your layout')
|
||||
continue
|
||||
if element.ParentContainer is not None:
|
||||
warnings.warn('*** YOU ARE ATTEMPTING TO RESUSE A LAYOUT! You must not attempt this kind of re-use ***', UserWarning)
|
||||
PopupError('Error creating layout',
|
||||
'The layout specified has already been used',
|
||||
'You MUST start witha "clean", unused layout every time you create a window',
|
||||
'The offensive Element = ',
|
||||
element,
|
||||
'and has a key = ', element.Key,
|
||||
'This item will be stripped from your layout')
|
||||
continue
|
||||
|
||||
element.Position = (CurrentRowNumber, i)
|
||||
element.ParentContainer = self
|
||||
CurrentRow.append(element)
|
||||
|
@ -5455,8 +5523,8 @@ class Window:
|
|||
except KeyError:
|
||||
element = None
|
||||
if not silent_on_error:
|
||||
print(
|
||||
'*** WARNING = FindElement did not find the key. Please check your key\'s spelling key = %s ***' % key)
|
||||
warnings.warn(
|
||||
'*** WARNING = FindElement did not find the key. Please check your key\'s spelling key = %s ***' % key, UserWarning)
|
||||
PopupError('Keyword error in FindElement Call',
|
||||
'Bad key = {}'.format(key),
|
||||
'Your bad line of code may resemble this:',
|
||||
|
|
Loading…
Reference in New Issue