Getter is not returning the data it should be

Sorry if the question is not directly related to WxPython, even if I’m using it for this project. I’m struggling with this problem for 2 days and I can’t find any help

I have a parent Class that has a setter that returns queryFiltre value and a getter that is supposed to pass the queryFiltre value to my child Class. queryFiltre Should return an SQL query like "SELECT * FROM Report WHERE GA_RPM > 0 and CAMPAIGN LIKE ‘%TT%’… ".

The print() in the setter returns a SQL query, but the print() of the getter, when called in the child Class, returns something like " <main.SimpleGrid object at 0x042AF2B0>".

What’s wrong with my code? Please bear with me as I’m still learning and oop is still an abstract concept in my head.

I’ve added comments in the code so you can see what happens where:

class SimpleGrid(gridlib.Grid): ##, mixins.GridAutoEditMixin):
    def __init__(self, parent, log):
        gridlib.Grid.__init__(self, parent, -1)

        ########### DATABASE CONNECT
        self.path =os.path.dirname(os.path.realpath(__file__))
        self.dbfile = os.path.join(self.path , "report.db")
        self.db_conn = sqlite3.connect(self.dbfile)
        self.theCursor =  self.db_conn.cursor()
        ########### SETTING FILE CONNECT
        self.configFile = os.path.join(self.path , "config.ini")
        self.config = configparser.ConfigParser()
        self.config.read(self.configFile)

        ########### Calling th Getter and Setter
        self.queryFiltre = self.setQueryFiltre(self)
        self.getQueryFiltre()

    ########### Setter
    def setQueryFiltre(self,queryFiltre):

            if self.config.get('Network', 'taboola') == "true" and self.config.get('Network', 'ob') == "true":
                network = ""
            elif self.config.get('Network', 'taboola') == "true" and self.config.get('Network', 'ob') == "false":
                network = " and CAMPAIGN LIKE '%TB%'"
            elif self.config.get('Network', 'outbrain') == "true" and self.config.get('Network', 'tb') == "false":
                network = " and CAMPAIGN LIKE '%OB%'"
            else:
                network = ""

            queryFiltre = "SELECT * FROM Report WHERE GA_RPM > 0 " + network + " and STATUS = '1' ORDER BY CLICKS DESC"

            ########### The print below returns the right value of queryFiltre
            print(queryFiltre)

            return queryFiltre
########### Getter
        def getQueryFiltre(queryFiltre):
            queryFiltre = queryFiltre
return queryFiltre
class TestFrame(wx.Frame):
    def __init__(self, parent, log):
        wx.Frame.__init__(self, parent, 0, "Native Ads Reports V1.0", size=(1400,800))
        self.grid = SimpleGrid(self, log)

        ########### Calling the Getter of the parent Class
        self.queryFiltre = self.grid.getQueryFiltre()

        ########### DATABASE CONNECT
        self.path =os.path.dirname(os.path.realpath(__file__))
        self.dbfile = os.path.join(self.path , "report.db")
        self.db_conn = sqlite3.connect(self.dbfile)
        self.theCursor =  self.db_conn.cursor()

        ########### The print below returns a bad value, something like : <__main__.SimpleGrid object at 0x042AF2B0>
        print(self.queryFiltre)

You’ll notice also that I’ve added the script to define the path and to connect to the db in both classes, is there a way to do it only once in the first Class?

Thank you,

See Inline! One of the problems is due to having classes with the same name as variables (this reduces clarity).

On Behalf Of Barb-Cr33k

···

Sorry if the question is not directly related to WxPython, even if I’m using it for this project. I’m struggling with this problem
for 2 days and I can’t find any help

I have a parent Class that has a setter that returns queryFiltre value and a getter that is supposed to pass the queryFiltre value to my child Class. queryFiltre Should return an SQL
query like "SELECT * FROM Report WHERE GA_RPM > 0 and CAMPAIGN LIKE ‘%TT%’… ".

The print() in the setter returns a SQL query, but the print() of the getter, when called in the child Class, returns something like " <main .SimpleGrid
object at 0x042AF2B0>".

What’s wrong with my code? Please bear with me as I’m still learning and oop is still an abstract concept in my head.

I’ve added comments in the code so you can see what happens where:

class SimpleGrid(gridlib.Grid): ##, mixins.GridAutoEditMixin):
    def __init__(self, parent, log):
        gridlib.Grid.__init__(self, parent, -1)


        ########### DATABASE CONNECT
        self.path =os.path.dirname(os.path.realpath(__file__))
        self.dbfile = os.path.join(self.path , "report.db")
        self.db_conn = sqlite3.connect(self.dbfile)
        self.theCursor =  self.db_conn.cursor()
        ########### SETTING FILE CONNECT
        self.configFile = os.path.join(self.path , "config.ini")
        self.config = configparser.ConfigParser()
        self.config.read(self.configFile)

        ########### Calling th Getter and Setter
        self.queryFiltre = self.setQueryFiltre(self)
        self.getQueryFiltre()

    ########### Setter
    def setQueryFiltre(self,queryFiltre):

            if self.config.get('Network', 'taboola') == "true" and self.config.get('Network', 'ob') == "true":
                network = ""
            elif self.config.get('Network', 'taboola') == "true" and self.config.get('Network', 'ob') == "false":
                network = " and CAMPAIGN LIKE '%TB%'"
            elif self.config.get('Network', 'outbrain') == "true" and self.config.get('Network', 'tb') == "false":
                network = " and CAMPAIGN LIKE '%OB%'"
            else:
                network = ""

            queryFiltre = "SELECT * FROM Report WHERE  GA_RPM > 0 " + network + "  and STATUS = '1' ORDER BY CLICKS DESC"

            ########### The print below returns the right value of queryFiltre
            print(queryFiltre)

            return queryFiltre

        ########### Getter
        def getQueryFiltre(queryFiltre):***[Steve Barnes]***  Would be clearer if the parameter was *self*
            queryFiltre = queryFiltre***[Steve Barnes]***   This returns the class object
            return queryFiltre


class TestFrame(wx.Frame):
    def __init__(self, parent, log):
        wx.Frame.__init__(self, parent, 0, "Native Ads Reports V1.0", size=(1400,800))
        self.grid = SimpleGrid(self, log)

        ########### Calling the Getter of the parent Class
        self.queryFiltre = self.grid.getQueryFiltre()

        ########### DATABASE CONNECT
        self.path =os.path.dirname(os.path.realpath(__file__))
        self.dbfile = os.path.join(self.path , "report.db")
        self.db_conn = sqlite3.connect(self.dbfile)
        self.theCursor =  self.db_conn.cursor()

        ########### The print below returns a bad value, something like : <__main__.SimpleGrid object at 0x042AF2B0>
        print(self.queryFiltre)
***[Steve Barnes] print(getQueryFiltre(self.queryFiltre)()) might be closer***

You'll notice also that I've added the script to define the path and to connect to the db in both classes, is there a way to do it only once in the first Class?

Thank you,

--
You received this message because you are subscribed to the Google Groups "wxPython-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to
wxpython-users+unsubscribe@googlegroups.com.
To view this discussion on the web visit [
https://groups.google.com/d/msgid/wxpython-users/7efe1833-4f06-4ca2-9b47-5320962d95dd%40googlegroups.com](https://groups.google.com/d/msgid/wxpython-users/7efe1833-4f06-4ca2-9b47-5320962d95dd%40googlegroups.com?utm_medium=email&utm_source=footer).
For more options, visit [https://groups.google.com/d/optout](https://groups.google.com/d/optout).

</details>

Pardon my ignorance but I can’t see what you have changed in the code. It’s the same I have posted! And I don’t get you reference to Steve Barnes.

The ***print(getQueryFiltre(self.queryFiltre)()) ***returned an error name ‘getQueryFiltre’ is not defined

To be honest I am
not the best programmer but I would do this at all - so take
my advise with a grain of salt.

      def

_getGridData(self):

              return getattr(self, "_GridData", None)

      def _setGridData          (self,

val):

              self._GridData
      = self.setQueryFiltre()

GridData =
property(_getGridData ,
_setGridData)

def setQueryFiltre():

 (somecode) ...

      Then use the

GridData property in your code. This is untested but it is
what I do often in my classes. I believe you should be able
to use the properties tool for your connection too.

Johnf

···

https://www.python-course.eu/python3_properties.php
On 6/1/19 2:12 PM, Barb-Cr33k wrote:

      Sorry if the question is not directly

related to WxPython, even if I’m using it for this project.
I’m struggling with this problem for 2 days and I can’t find
any help

      I have a parent Class that has a

setter that returns queryFiltre value and a getter that is
supposed to pass the queryFiltre value to my child Class.
queryFiltre Should return an SQL query like "SELECT * FROM
Report WHERE GA_RPM > 0 and CAMPAIGN LIKE ‘%TT%’… ".

      The print() in the setter returns a

SQL query, but the print() of the getter, when called in the
child Class, returns something like " <main .SimpleGrid
object at 0x042AF2B0>".

      What's wrong with my code? Please

bear with me as I’m still learning and oop is still an
abstract concept in my head.

      I've added comments in the code so

you can see what happens where:

class SimpleGrid(gridlib.Grid): ##, mixins.GridAutoEditMixin):
    def __init__(self, parent, log):
        gridlib.Grid.__init__(self, parent, -1)


        ########### DATABASE CONNECT
        self.path =os.path.dirname(os.path.realpath(__file__))
        self.dbfile = os.path.join(self.path , "report.db")
        self.db_conn = sqlite3.connect(self.dbfile)
        self.theCursor =  self.db_conn.cursor()
        ########### SETTING FILE CONNECT
        self.configFile = os.path.join(self.path , "config.ini")
        self.config = configparser.ConfigParser()
        self.config.read(self.configFile)

        ########### Calling th Getter and Setter
        self.queryFiltre = self.setQueryFiltre(self)
        self.getQueryFiltre()

    ########### Setter
    def setQueryFiltre(self,queryFiltre):

            if self.config.get('Network', 'taboola') == "true" and self.config.get('Network', 'ob') == "true":
                network = ""
            elif self.config.get('Network', 'taboola') == "true" and self.config.get('Network', 'ob') == "false":
                network = " and CAMPAIGN LIKE '%TB%'"
            elif self.config.get('Network', 'outbrain') == "true" and self.config.get('Network', 'tb') == "false":
                network = " and CAMPAIGN LIKE '%OB%'"
            else:
                network = ""

            queryFiltre = "SELECT * FROM Report WHERE GA_RPM > 0 " + network + " and STATUS = '1' ORDER BY CLICKS DESC"

            ########### The print below returns the right value of queryFiltre
            print(queryFiltre)

            return queryFiltre
########### Getter
        def getQueryFiltre(queryFiltre):
            queryFiltre = queryFiltre
return queryFiltre
class TestFrame(wx.Frame):
    def __init__(self, parent, log):
        wx.Frame.__init__(self, parent, 0, "Native Ads Reports V1.0", size=(1400,800))
        self.grid = SimpleGrid(self, log)

        ########### Calling the Getter of the parent Class
        self.queryFiltre = self.grid.getQueryFiltre()

        ########### DATABASE CONNECT
        self.path =os.path.dirname(os.path.realpath(__file__))
        self.dbfile = os.path.join(self.path , "report.db")
        self.db_conn = sqlite3.connect(self.dbfile)
        self.theCursor =  self.db_conn.cursor()

        ########### The print below returns a bad value, something like : <__main__.SimpleGrid object at 0x042AF2B0>
        print(self.queryFiltre)
      You'll notice also that I've added

the script to define the path and to connect to the db in both
classes, is there a way to do it only once in the first Class?

Thank you,

  You received this message because you are subscribed to the Google

Groups “wxPython-users” group.

  To unsubscribe from this group and stop receiving emails from it,

send an email to wxpython-users+unsubscribe@googlegroups.com.

  To view this discussion on the web visit [https://groups.google.com/d/msgid/wxpython-users/7efe1833-4f06-4ca2-9b47-5320962d95dd%40googlegroups.com](https://groups.google.com/d/msgid/wxpython-users/7efe1833-4f06-4ca2-9b47-5320962d95dd%40googlegroups.com?utm_medium=email&utm_source=footer).

  For more options, visit [https://groups.google.com/d/optout](https://groups.google.com/d/optout).

Thank you for your answer. I’m just a beginner and I have frankly no idea what you are talking about or how to implement it. I’m doing baby steps with my learning and I have to make my code works first, understand it and look for better ways to code it afterward.
All I’m asking is if someone can tell me what I’ve done wrong so my output is not correct.

Help me, please!

···

On Saturday, 1 June 2019 18:29:33 UTC-4, johnf wrote:

      To be honest I am

not the best programmer but I would do this at all - so take
my advise with a grain of salt.

      def

_getGridData(self):

              return getattr(self, "_GridData", None)

      def _setGridData          (self,

val):

              self._GridData
      = self.setQueryFiltre()

GridData =
property(_getGridData ,
_setGridData)

def setQueryFiltre():

 (somecode) ...
      Then use the

GridData property in your code. This is untested but it is
what I do often in my classes. I believe you should be able
to use the properties tool for your connection too.

https://www.python-course.eu/python3_properties.php

Johnf

On 6/1/19 2:12 PM, Barb-Cr33k wrote:

      Sorry if the question is not directly

related to WxPython, even if I’m using it for this project.
I’m struggling with this problem for 2 days and I can’t find
any help

      I have a parent Class that has a

setter that returns queryFiltre value and a getter that is
supposed to pass the queryFiltre value to my child Class.
queryFiltre Should return an SQL query like "SELECT * FROM
Report WHERE GA_RPM > 0 and CAMPAIGN LIKE ‘%TT%’… ".

      The print() in the setter returns a

SQL query, but the print() of the getter, when called in the
child Class, returns something like " <main .SimpleGrid
object at 0x042AF2B0>".

      What's wrong with my code? Please

bear with me as I’m still learning and oop is still an
abstract concept in my head.

      I've added comments in the code so

you can see what happens where:

class SimpleGrid(gridlib.Grid): ##, mixins.GridAutoEditMixin):
    def __init__(self, parent, log):
        gridlib.Grid.__init__(self, parent, -1)


        ########### DATABASE CONNECT
        self.path =os.path.dirname(os.path.realpath(__file__))
        self.dbfile = os.path.join(self.path , "report.db")
        self.db_conn = sqlite3.connect(self.dbfile)
        self.theCursor =  self.db_conn.cursor()
        ########### SETTING FILE CONNECT
        self.configFile = os.path.join(self.path , "config.ini")
        self.config = configparser.ConfigParser()
        self.config.read(self.configFile)

        ########### Calling th Getter and Setter
        self.queryFiltre = self.setQueryFiltre(self)
        self.getQueryFiltre()

    ########### Setter
    def setQueryFiltre(self,queryFiltre):

            if self.config.get('Network', 'taboola') == "true" and self.config.get('Network', 'ob') == "true":
                network = ""
            elif self.config.get('Network', 'taboola') == "true" and self.config.get('Network', 'ob') == "false":
                network = " and CAMPAIGN LIKE '%TB%'"
            elif self.config.get('Network', 'outbrain') == "true" and self.config.get('Network', 'tb') == "false":
                network = " and CAMPAIGN LIKE '%OB%'"
            else:
                network = ""

            queryFiltre = "SELECT * FROM Report WHERE GA_RPM > 0 " + network + " and STATUS = '1' ORDER BY CLICKS DESC"

            ########### The print below returns the right value of queryFiltre
            print(queryFiltre)

            return queryFiltre
########### Getter
        def getQueryFiltre(queryFiltre):
            queryFiltre = queryFiltre
return queryFiltre
class TestFrame(wx.Frame):
    def __init__(self, parent, log):
        wx.Frame.__init__(self, parent, 0, "Native Ads Reports V1.0", size=(1400,800))
        self.grid = SimpleGrid(self, log)

        ########### Calling the Getter of the parent Class
        self.queryFiltre = self.grid.getQueryFiltre()

        ########### DATABASE CONNECT
        self.path =os.path.dirname(os.path.realpath(__file__))
        self.dbfile = os.path.join(self.path , "report.db")
        self.db_conn = sqlite3.connect(self.dbfile)
        self.theCursor =  self.db_conn.cursor()

        ########### The print below returns a bad value, something like : <__main__.SimpleGrid object at 0x042AF2B0>
        print(self.queryFiltre)
      You'll notice also that I've added

the script to define the path and to connect to the db in both
classes, is there a way to do it only once in the first Class?

Thank you,

  You received this message because you are subscribed to the Google

Groups “wxPython-users” group.

  To unsubscribe from this group and stop receiving emails from it,

send an email to wxpytho...@googlegroups.com.

  To view this discussion on the web visit [https://groups.google.com/d/msgid/wxpython-users/7efe1833-4f06-4ca2-9b47-5320962d95dd%40googlegroups.com](https://groups.google.com/d/msgid/wxpython-users/7efe1833-4f06-4ca2-9b47-5320962d95dd%40googlegroups.com?utm_medium=email&utm_source=footer).

  For more options, visit [https://groups.google.com/d/optout](https://groups.google.com/d/optout).

Barb-Cr33k wrote:

I have a parent Class that has a setter that returns queryFiltre value and a getter that is supposed to pass the queryFiltre value to my child Class. queryFiltre Should return an SQL query like "SELECT * FROM Report WHERE GA_RPM > 0 and CAMPAIGN LIKE '%TT%'... ".

The print() in the setter returns a SQL query, but the print() of the getter, when called in the child Class, returns something like " <*main*.SimpleGrid object at 0x042AF2B0>".

You have some very interesting bugs. The immediate problem is this:

defgetQueryFiltre(queryFiltre):queryFiltre =queryFiltre returnqueryFiltre|

which you later call like this:

self.queryFiltre =self.grid.getQueryFiltre()|

Your little 3-line function actually has three separate bugs. :wink: First, notice that you do not have a "self" parameter. Python doesn't really care what you call it, but when you call an object method, it always passes the object as the first parameter. In your case, that call is actually turned into:

     self\.queryFiltre = SimpleGrid\.getQueryFiltre\( self\.grid \)

And since the function just returns its first parameter, it's returning "self.grid". I suspect what you really wanted was this:

     def getQueryFiltre\(self\):
         return self\.queryFiltre
···

--
Tim Roberts, timr@probo.com
Providenza & Boekelheide, Inc.

Thank you Tim, as always to the point, and the bonus explaination helped a lot to understand my mistake :)
···

On Saturday, 1 June 2019 22:26:00 UTC-4, Tim Roberts wrote:

Barb-Cr33k wrote:

    I have a parent Class that has a setter that

returns queryFiltre value and a getter that is supposed to pass
the queryFiltre value to my child Class. queryFiltre Should
return an SQL query like "SELECT * FROM Report WHERE GA_RPM >
0 and CAMPAIGN LIKE ‘%TT%’… “.
The print() in the setter returns a
SQL query, but the print() of the getter, when called in the
child Class, returns something like " <main .SimpleGrid
object at 0x042AF2B0>”.

  You have some very interesting bugs.  The immediate problem is

this:

        def getQueryFiltre(queryFiltre):
            queryFiltre = queryFiltre
return queryFiltre

which you later call like this:

        self.queryFiltre = self.grid.getQueryFiltre()

  Your little 3-line function actually has three separate bugs. 

:wink: First, notice that you do not have a “self” parameter.
Python doesn’t really care what you call it, but when you call an
object method, it always passes the object as the first
parameter. In your case, that call is actually turned into:

self.queryFiltre = SimpleGrid.getQueryFiltre( self.grid )

  And since the function just returns its first parameter, it's

returning “self.grid”. I suspect what you really wanted was this:

def getQueryFiltre(self):
return self.queryFiltre

-- Tim Roberts, ti...@probo.com
Providenza & Boekelheide, Inc.

Use the link I
provided and learn how to use a property for getters and
setters.

Johnf

···

On 6/1/19 3:56 PM, Barb-Cr33k wrote:

    Thank you for your answer. I'm just a beginner and

I have frankly no idea what you are talking about or how to
implement it. I’m doing baby steps with my learning and I have
to make my code works first, understand it and look for better
ways to code it afterward.
All I’m asking is if someone can tell me what I’ve done
wrong so my output is not correct.

Help me, please!

      On Saturday, 1 June 2019 18:29:33 UTC-4, johnf wrote:
                To be

honest I am not the best programmer but I would do
this at all - so take my advise with a grain of
salt.

                def

_getGridData(self):

                        return getattr(self, "_GridData                    ",

None)

                def _setGridData                    (self,

val):

                        self._GridData =

self.setQueryFiltre()

GridData
= property(_getGridData ,
_setGridData)

def setQueryFiltre():

(somecode) …

                Then use

the GridData property in your code. This is
untested but it is what I do often in my classes. I
believe you should be able to use the properties
tool for your connection too.

https://www.python-course.eu/python3_properties.php

Johnf

On 6/1/19 2:12 PM, Barb-Cr33k wrote:

                Sorry if the question is not directly related to

WxPython, even if I’m using it for this project. I’m
struggling with this problem for 2 days and I can’t
find any help

                I have a parent Class that has a setter that

returns queryFiltre value and a getter that is
supposed to pass the queryFiltre value to my child
Class. queryFiltre Should return an SQL query like
"SELECT * FROM Report WHERE GA_RPM > 0 and
CAMPAIGN LIKE ‘%TT%’… ".

                The print() in the setter returns a SQL query, but

the print() of the getter, when called in the child
Class, returns something like " <main .SimpleGrid
object at 0x042AF2B0>".

                What's wrong with my code? Please bear with me as

I’m still learning and oop is still an abstract
concept in my head.

                I've added comments in the code so you can see what

happens where:

class SimpleGrid(gridlib.Grid): ##, mixins.GridAutoEditMixin):
    def __init__(self, parent, log):
        gridlib.Grid.__init__(self, parent, -1)


        ########### DATABASE CONNECT
        self.path =os.path.dirname(os.path.realpath(__file__))
        self.dbfile = os.path.join(self.path , "report.db")
        self.db_conn = sqlite3.connect(self.dbfile)
        self.theCursor =  self.db_conn.cursor()
        ########### SETTING FILE CONNECT
        self.configFile = os.path.join(self.path , "config.ini")
        self.config = configparser.ConfigParser()
        self.config.read(self.configFile)

        ########### Calling th Getter and Setter
        self.queryFiltre = self.setQueryFiltre(self)
        self.getQueryFiltre()

    ########### Setter
    def setQueryFiltre(self,queryFiltre):

            if self.config.get('Network', 'taboola') == "true" and self.config.get('Network', 'ob') == "true":
                network = ""
            elif self.config.get('Network', 'taboola') == "true" and self.config.get('Network', 'ob') == "false":
                network = " and CAMPAIGN LIKE '%TB%'"
            elif self.config.get('Network', 'outbrain') == "true" and self.config.get('Network', 'tb') == "false":
                network = " and CAMPAIGN LIKE '%OB%'"
            else:
                network = ""

            queryFiltre = "SELECT * FROM Report WHERE GA_RPM > 0 " + network + " and STATUS = '1' ORDER BY CLICKS DESC"

            ########### The print below returns the right value of queryFiltre
            print(queryFiltre)

            return queryFiltre
########### Getter
        def getQueryFiltre(queryFiltre):
            queryFiltre = queryFiltre
return queryFiltre
class TestFrame(wx.Frame):
    def __init__(self, parent, log):
        wx.Frame.__init__(self, parent, 0, "Native Ads Reports V1.0", size=(1400,800))
        self.grid = SimpleGrid(self, log)

        ########### Calling the Getter of the parent Class
        self.queryFiltre = self.grid.getQueryFiltre()

        ########### DATABASE CONNECT
        self.path =os.path.dirname(os.path.realpath(__file__))
        self.dbfile = os.path.join(self.path , "report.db")
        self.db_conn = sqlite3.connect(self.dbfile)
        self.theCursor =  self.db_conn.cursor()

        ########### The print below returns a bad value, something like : <__main__.SimpleGrid object at 0x042AF2B0>
        print(self.queryFiltre)
                You'll notice also that I've added the script to

define the path and to connect to the db in both
classes, is there a way to do it only once in the
first Class?

Thank you,

            You received this message because you are subscribed to

the Google Groups “wxPython-users” group.

            To unsubscribe from this group and stop receiving emails

from it, send an email to wxpytho...@googlegroups.com.

            To view this discussion on the web visit [https://groups.google.com/d/msgid/wxpython-users/7efe1833-4f06-4ca2-9b47-5320962d95dd%40googlegroups.com](https://groups.google.com/d/msgid/wxpython-users/7efe1833-4f06-4ca2-9b47-5320962d95dd%40googlegroups.com?utm_medium=email&utm_source=footer).

            For more options, visit [https://groups.google.com/d/optout](https://groups.google.com/d/optout).

  You received this message because you are subscribed to the Google

Groups “wxPython-users” group.

  To unsubscribe from this group and stop receiving emails from it,

send an email to wxpython-users+unsubscribe@googlegroups.com.

  To view this discussion on the web visit [https://groups.google.com/d/msgid/wxpython-users/601e4412-0e3e-4752-8aac-c0e4ad130ce1%40googlegroups.com](https://groups.google.com/d/msgid/wxpython-users/601e4412-0e3e-4752-8aac-c0e4ad130ce1%40googlegroups.com?utm_medium=email&utm_source=footer).

  For more options, visit [https://groups.google.com/d/optout](https://groups.google.com/d/optout).