Develop a GUI (details given below)by Using Tkinter and wxPython, compare the code complexity of both and give your observation.

\begin{table}[]
\begin{tabular}{lllll}
& & CALCULATOR & & \\
& Number-1 & Number-2 & Output & \\
Add & Subtract & Multiply & Divide & \\ \cline{1-1}
\multicolumn{1}{|l|}{} & & & & \\ \cline{1-1}
\end{tabular}
\end{table}

Details of GUI: the GUI for Truth table should accept two bits (0 or 1) as input and produce the Output as per the Logical operation to be chosen by pressing the button of that particular logical operation i.e. AND, OR, NOT,NAND, NOR, XOR. You may use other suitable components like text box, combo box, list, Radio Button, Check Box, Buttons etc. to implement the GUI.

(Note: Make suitable assumptions where ever necessary)

Tkinter implementation:

```python
import tkinter as tk

class Calculator:
def __init__(self, master):
self.master = master
master.title("Calculator")

# create input fields
self.num1_label = tk.Label(master, text="Number-1:")
self.num1_label.grid(row=0, column=0)

self.num2_label = tk.Label(master, text="Number-2:")
self.num2_label.grid(row=1, column=0)

self.num1_entry = tk.Entry(master)
self.num1_entry.grid(row=0, column=1)

self.num2_entry = tk.Entry(master)
self.num2_entry.grid(row=1, column=1)

# create output field
self.output_label = tk.Label(master, text="Output:")
self.output_label.grid(row=2, column=0)

self.output_entry = tk.Entry(master)
self.output_entry.grid(row=2, column=1)

# create operation buttons
self.add_button = tk.Button(master, text="Add", command=self.add)
self.add_button.grid(row=3, column=0)

self.sub_button = tk.Button(master, text="Subtract", command=self.subtract)
self.sub_button.grid(row=3, column=1)

self.mul_button = tk.Button(master, text="Multiply", command=self.multiply)
self.mul_button.grid(row=4, column=0)

self.div_button = tk.Button(master, text="Divide", command=self.divide)
self.div_button.grid(row=4, column=1)

def add(self):
num1 = int(self.num1_entry.get())
num2 = int(self.num2_entry.get())
output = num1 + num2
self.output_entry.delete(0, tk.END)
self.output_entry.insert(0, output)

def subtract(self):
num1 = int(self.num1_entry.get())
num2 = int(self.num2_entry.get())
output = num1 - num2
self.output_entry.delete(0, tk.END)
self.output_entry.insert(0, output)

def multiply(self):
num1 = int(self.num1_entry.get())
num2 = int(self.num2_entry.get())
output = num1 * num2
self.output_entry.delete(0, tk.END)
self.output_entry.insert(0, output)

def divide(self):
num1 = int(self.num1_entry.get())
num2 = int(self.num2_entry.get())
output = num1 / num2
self.output_entry.delete(0, tk.END)
self.output_entry.insert(0, output)

root = tk.Tk()
calculator = Calculator(root)
root.mainloop()
```

wxPython implementation:

```python
import wx

class Calculator(wx.Frame):
def __init__(self):
super().__init__(None, title="Calculator")

# create input fields
self.num1_label = wx.StaticText(self, label="Number-1:")
self.num1_entry = wx.TextCtrl(self)

self.num2_label = wx.StaticText(self, label="Number-2:")
self.num2_entry = wx.TextCtrl(self)

vbox1 = wx.BoxSizer(wx.VERTICAL)
vbox1.Add(self.num1_label, 0, wx.ALL, 5)
vbox1.Add(self.num1_entry, 0, wx.ALL, 5)

vbox2 = wx.BoxSizer(wx.VERTICAL)
vbox2.Add(self.num2_label, 0, wx.ALL, 5)
vbox2.Add(self.num2_entry, 0, wx.ALL, 5)

hbox1 = wx.BoxSizer(wx.HORIZONTAL)
hbox1.Add(vbox1, 0, wx.ALL, 5)
hbox1.Add(vbox2, 0, wx.ALL, 5)

# create output field
self.output_label = wx.StaticText(self, label="Output:")
self.output_entry = wx.TextCtrl(self)

hbox2 = wx.BoxSizer(wx.HORIZONTAL)
hbox2.Add(self.output_label, 0, wx.ALL, 5)
hbox2.Add(self.output_entry, 0, wx.ALL, 5)

# create operation buttons
self.add_button = wx.Button(self, label="Add")
self.sub_button = wx.Button(self, label="Subtract")
self.mul_button = wx.Button(self, label="Multiply")
self.div_button = wx.Button(self, label="Divide")

hbox3 = wx.BoxSizer(wx.HORIZONTAL)
hbox3.Add(self.add_button, 0, wx.ALL, 5)
hbox3.Add(self.sub_button, 0, wx.ALL, 5)
hbox3.Add(self.mul_button, 0, wx.ALL, 5)
hbox3.Add(self.div_button, 0, wx.ALL, 5)

# bind buttons to methods
self.add_button.Bind(wx.EVT_BUTTON, self.add)
self.sub_button.Bind(wx.EVT_BUTTON, self.subtract)
self.mul_button.Bind(wx.EVT_BUTTON, self.multiply)
self.div_button.Bind(wx.EVT_BUTTON, self.divide)

# create main box sizer
vbox = wx.BoxSizer(wx.VERTICAL)
vbox.Add(hbox1, 0, wx.ALL, 5)
vbox.Add(hbox2, 0, wx.ALL, 5)
vbox.Add(hbox3, 0, wx.ALL, 5)

self.SetSizerAndFit(vbox)

def add(self, event):
num1 = int(self.num1_entry.GetValue())
num2 = int(self.num2_entry.GetValue())
output = num1 + num2
self.output_entry.SetValue(str(output))

def subtract(self, event):
num1 = int(self.num1_entry.GetValue())
num2 = int(self.num2_entry.GetValue())
output = num1 - num2
self.output_entry.SetValue(str(output))

def multiply(self, event):
num1 = int(self.num1_entry.GetValue())
num2 = int(self.num2_entry.GetValue())
output = num1 * num2
self.output_entry.SetValue(str(output))

def divide(self, event):
num1 = int(self.num1_entry.GetValue())
num2 = int(self.num2_entry.GetValue())
output = num1 / num2
self.output_entry.SetValue(str(output))

app = wx.App(False)
frame = Calculator()
frame.Show()
app.MainLoop()
```

Observation:

The wxPython code is slightly more complex than the Tkinter code due to the need to create box sizers and bind events to buttons. However, it also allows for more flexibility in creating the layout of the GUI. In general, the choice between the two will depend on the specific requirements of the project and the familiarity of the developer with each library.