'''
Created on Jun 15, 2019
@author: Burkhard A. Meier
'''

#==================================================================
import tkinter as tk
from tkinter import ttk
from tkinter import scrolledtext
from threading import Thread

win = tk.Tk()    
     
win.title("Python GUI")
aLabel = ttk.Label(win, text="A Label")
aLabel.grid(column=0, row=0)    
ttk.Label(win, text="Enter a name:").grid(column=0, row=0)
name = tk.StringVar()
nameEntered = ttk.Entry(win, width=12, textvariable=name)
nameEntered.grid(column=0, row=1)
ttk.Label(win, text="Choose a number:").grid(column=1, row=0)
number = tk.StringVar()
numberChosen = ttk.Combobox(win, width=12, textvariable=number)
numberChosen['values'] = (1, 2, 4, 42, 100)
numberChosen.grid(column=1, row=1)
numberChosen.current(0)
scrolW  = 30
scrolH  =  3
scr = scrolledtext.ScrolledText(win, width=scrolW, height=scrolH, wrap=tk.WORD)
scr.grid(column=0, sticky='WE', columnspan=3)
nameEntered.focus()  

#==================================================================     
## working           
def wxPythonApp():
    import wx
    app = wx.App()
    frame = wx.Frame(None, -1, "wxPython GUI", size=(200,150))
    frame.SetBackgroundColour('white')
    frame.CreateStatusBar()
    menu= wx.Menu()
    menu.Append(wx.ID_ABOUT, "About", "wxPython GUI")
    menuBar = wx.MenuBar()
    menuBar.Append(menu,"File") 
    frame.SetMenuBar(menuBar)     
    frame.Show()
    
    runT = Thread(target=app.MainLoop)
    runT.setDaemon(True)    
    runT.start()
    print(runT)
    print('createThread():', runT.isAlive())

action = ttk.Button(win, text="Call wxPython GUI", command=wxPythonApp) 
action.grid(column=2, row=1)
#================================================================== 


## NOT working - CRASHES Python -----------------------------------
# def wxPythonApp():
#     import wx
#     app = wx.App()
#     frame = wx.Frame(None, -1, "wxPython GUI", size=(200,150))
#     frame.SetBackgroundColour('white')
#     frame.CreateStatusBar()
#     menu= wx.Menu()
#     menu.Append(wx.ID_ABOUT, "About", "wxPython GUI")
#     menuBar = wx.MenuBar()
#     menuBar.Append(menu,"File") 
#     frame.SetMenuBar(menuBar)     
#     frame.Show()
#     app.MainLoop()
# 
# def tryRunInThread():
#     runT = Thread(target=wxPythonApp)
#     runT.setDaemon(True)    
#     runT.start()
#     print(runT)
#     print('createThread():', runT.isAlive())    
#         
# action = ttk.Button(win, text="Call wxPython GUI", command=tryRunInThread) 
# action.grid(column=2, row=1)
##-----------------------------------------------------------------
    
#======================
# Start GUI
#======================
win.mainloop()