Help for an absolute beginner in Python

Thread Starter

ArakelTheDragon

Joined Nov 18, 2016
1,353
Hi guys!

I started learning Python. I am trying to make a simple program which has the visual creation in 1 class and the functions in another class. I get the error: Traceback (most recent call last): File "E:\Other\OS_Python_Testing\Temporary.py", line 135, in OnPlus Text = VisualCreation.TextControl.GetValue()#VisualCreation.sc.GetValue() AttributeError: 'CommandEvent' object has no attribute 'TextControl'

The idea is how to use the function from the other class(Functions).

Code:
#!/usr/bin/env python3  #Settings.
# -*- coding: utf-8 -*- #Encoding of the source code.
# simple.py #Name of the file.

import wx
import wx.adv
  #Global variables
APP_EXIT = 1#ID
APP_SECOND = 2#ID
Text = 'No last action.'#The variable is used to return a result as char or int

class Example(wx.Frame):#"wx.VisualCreation" is turned into a class. Initialization for every class.
  
  def __init__(VisualCreation, *args, **kwargs):#???Initialization???
  super(Example, VisualCreation).__init__(*args, **kwargs)

  VisualCreation.InitUI()

  def InitUI(VisualCreation):#Main features for every class.
  VisualCreation.locale = wx.Locale(wx.LANGUAGE_ENGLISH)#The locale is needed to avoid Python 3 bugs.
  VisualCreation.SetSize((330, 250))#Set the program size. For windows 10 it needs to be "340, 250".
  VisualCreation.SetTitle('Name')#Set the program title in the upest bar.
  VisualCreation.Centre()#The program will start in the center of the screen.
  
  #Menu bar visual creation block
  menubar = wx.MenuBar()
  help = wx.Menu()
  help.Append(wx.ID_ANY, '&About')
  help.Bind(wx.EVT_MENU, VisualCreation.OnAboutBox)

  menubar.Append(help, '&Help')
  VisualCreation.SetMenuBar(menubar)
  
  Panel = wx.Panel(VisualCreation, id=wx.ID_ANY, pos=wx.DefaultPosition, size=wx.DefaultSize, style=wx.TAB_TRAVERSAL, name='Panel')#Block visual creation for the panel for buttons and static text boxes. All of them must be in a panel.
  VisualCreation.TextControl = wx.TextCtrl(parent=Panel, id=wx.ID_ANY, value='message', pos=(10, 145), size=(140, 20), style=wx.OK)
  VisualCreation.TextControl1 = wx.TextCtrl(parent=Panel, id=wx.ID_ANY, value='message', pos=(170, 145), size=(140, 20), style=wx.OK)
  ####################################################################################
  font = wx.Font(13, wx.DEFAULT, wx.NORMAL, wx.NORMAL)#size, family, style, weight/size, wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL
  st1 = wx.StaticText(Panel, wx.ID_ANY, label='Made by.', pos=(10, 175), style=wx.ALIGN_CENTRE)#Wx.StaticText(parent, id, label, position, size, style)
  st1.SetFont(font)
  #Buttons block visual creation
  ButtonBinaryToAll = wx.Button(Panel, wx.ID_ANY, 'BinaryToAll', (10, 35))#Define the button BinToAll.
  #Buttons block function bind
  VisualCreation.Bind(wx.EVT_BUTTON,  Functions.OnBinaryToAll, id=ButtonBinaryToAll.GetId())#Assign a function to the button +.
  ####################################################################################
  ####################################################################################
  #Buttons block visual creation
  ButtonDivision = wx.Button(Panel, wx.ID_ANY, '/', (235, 10))#Define the button +.
  #Buttons block function bind
  VisualCreation.Bind(wx.EVT_BUTTON,  Functions.OnPlus, id=ButtonDivision.GetId())#Assign a function to the button +.
  ####################################################################################
  ####################################################################################
  ButtonMultiplication = wx.Button(Panel, wx.ID_ANY, '*', (160, 10))#Define the button +.
  #Buttons block function bind
  VisualCreation.Bind(wx.EVT_BUTTON,  Functions.OnMinus, id=ButtonMultiplication.GetId())#Assign a function to the button +.
  #Program size/title/position block.
  ####################################################################################
  ####################################################################################
  ButtonMinus = wx.Button(Panel, wx.ID_ANY, '-', (85, 10))#Define the button +.
  #Buttons block function bind
  VisualCreation.Bind(wx.EVT_BUTTON,  Functions.OnMinus, id=ButtonMinus.GetId())#Assign a function to the button +.
  ####################################################################################
  ####################################################################################
  #Buttons block visual creation
  ButtonPlus = wx.Button(Panel, 1, '+', (10, 10))#Define the button +.
  #Buttons block function bind
  ButtonPlus.Bind(wx.EVT_BUTTON,  Functions.OnPlus, id=ButtonPlus.GetId())#Assign a function to the button +.
  ####################################################################################
#If I use this option it works.
  def OnPlus(VisualCreation, e):#Function for buttons +.
  Text = VisualCreation.TextControl.GetValue()#VisualCreation.sc.GetValue()
  Text1 = VisualCreation.TextControl1.GetValue()#VisualCreation.sc.GetValue()
  Text2 = int(Text) + int(Text1)
  dial = wx.MessageBox( str(Text2), 'Result:', wx.OK | wx.ICON_NONE)  


  def OnAboutBox(VisualCreation, e):

  description = """Description.
"""

  licence = """GNU GPL v3 license.

Warranty."""

  info = wx.adv.AboutDialogInfo()

  info.SetIcon(wx.Icon('logo.png', wx.BITMAP_TYPE_PNG))
  info.SetName('Name')
  info.SetVersion('1.0')
  info.SetDescription(description)
  info.SetCopyright('(C) 2019 www..com')
  info.SetWebSite('http://www..com')
  info.SetLicence(licence)
  info.AddDeveloper('.com')
  info.AddDocWriter('.com')
  info.AddArtist('The .com team')
  info.AddTranslator('.com')

  wx.adv.AboutBox(info)

  #Function block implemented in a class
class Functions():
  #Does not works. Error: Traceback (most recent call last): File "E:\Other\OS_Python_Testing\Temporary.py", line 135, in OnPlus Text = VisualCreation.TextControl.GetValue()#VisualCreation.sc.GetValue() AttributeError: 'CommandEvent' object has no attribute 'TextControl'
  def OnPlus(VisualCreation):#Function for buttons +.
  Text = VisualCreation.TextControl.GetValue()#VisualCreation.sc.GetValue()
  Text1 = VisualCreation.TextControl1.GetValue()#VisualCreation.sc.GetValue()
  Text2 = int(Text) + int(Text1)
  dial = wx.MessageBox( str(Text2), 'Result:', wx.OK | wx.ICON_NONE)  

def main():

  app = wx.App()
  ex = Example(None)
  ex.Show()
  app.MainLoop()


if __name__ == '__main__':
  main()
 

djsfantasi

Joined Apr 11, 2010
7,689
is the problem solved?
Merdobeyz,

This thread is over two years old. Responding to it is probably useless, as the participants have moved on. Plus, on a forum, it is considered rude. It has its own name. Necroposting. All participants get a notification only to find someone responded to an old post.

Old posts have a warning near the reply box. It clearly states that it’s an old post. There aren’t many exceptions to this rule.

If you have a related question, start your own post. Otherwise, don’t respond to posts marked old.

As a new member, I’m making these comments not to chastise you, but help you learn forum etiquette.

BTW, welcome!
 
Top