From: Ade <sk...@bl...> - 2005-04-01 21:37:02
|
Finding PythonCard was a blessing, it allowed me, when I was starting out with Python, quick simple access to the most used settings/setup for a lot of components used in wxPython. It seems to me very, very stable, flexible and quick. The interface. It is good, as it is... very good. It has served well in my learning of python without needing to expand much beyond it. Annoyances. Not being able to select more than one component. Tab order, having an actual z-Order property number would solve this nicely. What would be nice. Double clicking on a component, it would be nice for it to put focus back to the properties window and have that component selected. Or better yet have a set up function to have double click do one of a number of quickly wanted functions. Alternatively, having the whole properties 'thing' appear on a right click menu? For my part I have had to start dealing with wxPython to get some of the components to perform differently, like removing the automatic linefeed at the end of the text area ( now taken care of in 0.81 of cause ) or the length of the list from a combo box or having two line button names. It would be so, so nice to have most of the settings for most of the components available in the script so they can be 'easily' and transparently modified within the PythonCard script rather than in the murky depths of wxPython. As a last resort I ended up modifying the standard component in PythonCard. I first tried to add the modified component to the components menu but failed :(. As an alternative a User components menu item where non-standard components can be added with ease would be a compromise, however this still requires the wxPython know-how. Might even generate contributions of reworked components? This sounds like a lot of work though. However as I said, I have happily used PythonCard for over 2 years. |
From: Liam C. <cy...@gm...> - 2005-04-02 04:38:54
|
> Tab order, having an actual z-Order property number would solve this nicely. Just checking, you know that the order in the Resource file determines the tab order? i.e. {'application':{'type':'Application', 'name':'Template', 'backgrounds': [ {'type':'Background', 'name':'bgTemplate', 'title':'Client details', 'position':(-5, 25), 'size':(1027, 689), 'icon':'lux.ico', 'menubar': {'type':'MenuBar', 'menus': [ {'type':'Menu', 'name':'menuFile', 'label':'&File', 'items': [ {'type':'MenuItem', 'name':'menuFileExit', 'label':'E&xit', 'command':'exit', }, ] }, ] }, 'components': [ {'type':'Button', 'name':'closeButton', 'position':(870, 590), 'size':(100, -1), 'label':'Close', }, {'type':'Button', 'name':'saveButton', 'position':(740, 590), 'size':(100, -1), 'label':'Save', }, {'type':'Button', 'name':'jobsButton', 'position':(530, 310), 'label:'Jobs' 'size':(100, -1), 'label':'Save', }, closeButton tabs to saveButton which tabs to jobsButton. I don't know if this is documented anywhere obvious though. Regards, Liam Clarke -- 'There is only one basic human right, and that is to do as you damn well please. And with it comes the only basic human duty, to take the consequences.' |
From: Liam C. <cy...@gm...> - 2005-04-10 10:13:06
|
Hi there,=20 Sorry to resurrect an old topic, but just working with the multi-column=20 list. I have the column headings stored in the resource file, but I want to chang= e=20 how the column headings are formatted. AFAIK, in wxPython you can only set= =20 formatting when calling wx.ListCtrl.InsertColumn, which is I believe what= =20 MultiColumnList (MCL) does for my column headings upon instantiation. What I was wondering was would it be possible to have a optional attribute= =20 for that list like=20 'format': None in the resource file? Then you could add in the basic format= s=20 (list_left) if you needed them. I dunno, MultiColumnList is so easy to use compared to the wxPython=20 ListCtrl, so, in my pursuit of maximum effect for minimum effort, I'd rathe= r=20 avoid wx stuff as much as possible. I'm having nightmares after trying to= =20 figure out how to use wx.DC's effectively.=20 Alternatively, would it be possible to stick a method in MCL to effectively= ,=20 destroy the existing MCL and create it again, but with formatting?=20 I know that it would be a 95% un-needed method/attribute, so I'm asking=20 'just in case' someone's poking at MCL and feels creative. Regards,=20 Liam Clarke --=20 'There is only one basic human right, and that is to do as you damn well=20 please. And with it comes the only basic human duty, to take the consequences.' |
From: Liam C. <cy...@gm...> - 2005-04-10 19:59:50
|
Hello again,=20 Feeling kind of silly, just looked more closely at MCL, and found lines=20 330-338 under the method=20 _setColumnHeadings(self, aList): elif w =3D=3D 3 and \ isinstance(aList[0][0], StringType) and \ isinstance(aList[0][1], IntType) and \ isinstance(aList[0][2], IntType): flag =3D 0 for i in xrange(numcols): if aList[i][1] !=3D wx.LIST_AUTOSIZE: flag =3D 1 self.InsertColumn(i, aList[i][0], format=3DaList[i][2], width=3DaList[i][1]= ) So, I get the feeling that if I create my ColumnHeadings as a list of [=20 "Column name", x, y] where x and y are both integers, then it'll come through to this=20 InsertColumn method... But, what values are legitimate values? If x and y have to be ints, how doe= s=20 that fit in with InsertColumn? I'm used to wx.LIST_AUTOSIZE and so forth. Those isinstance()'s in the elif clause are a bit confusing actually.... Not overly much documentation on InsertColumn at wxpython.org<http://wxpython.org>either. :( Any help would be gratefully appreciated,=20 Liam Clarke On Apr 10, 2005 10:12 PM, Liam Clarke <cy...@gm...> wrote: >=20 > Hi there,=20 >=20 > Sorry to resurrect an old topic, but just working with the multi-column= =20 > list. >=20 > I have the column headings stored in the resource file, but I want to=20 > change how the column headings are formatted. AFAIK, in wxPython you can= =20 > only set formatting when calling wx.ListCtrl.InsertColumn, which is I=20 > believe what MultiColumnList (MCL) does for my column headings upon=20 > instantiation. >=20 > What I was wondering was would it be possible to have a optional attribut= e=20 > for that list like=20 > 'format': None in the resource file? Then you could add in the basic=20 > formats (list_left) if you needed them. >=20 > I dunno, MultiColumnList is so easy to use compared to the wxPython=20 > ListCtrl, so, in my pursuit of maximum effect for minimum effort, I'd rat= her=20 > avoid wx stuff as much as possible. I'm having nightmares after trying to= =20 > figure out how to use wx.DC's effectively.=20 >=20 > Alternatively, would it be possible to stick a method in MCL to=20 > effectively, destroy the existing MCL and create it again, but with=20 > formatting?=20 >=20 > I know that it would be a 95% un-needed method/attribute, so I'm asking= =20 > 'just in case' someone's poking at MCL and feels creative. >=20 >=20 > Regards,=20 >=20 >=20 > Liam Clarke >=20 > --=20 > 'There is only one basic human right, and that is to do as you damn well= =20 > please. > And with it comes the only basic human duty, to take the consequences.'= =20 >=20 --=20 'There is only one basic human right, and that is to do as you damn well=20 please. And with it comes the only basic human duty, to take the consequences.' |
From: Alex T. <al...@tw...> - 2005-04-11 20:53:50
|
Liam Clarke wrote: > Hello again, > > Feeling kind of silly, just looked more closely at MCL, and found > lines 330-338 under the method > _setColumnHeadings(self, aList): > > elif w == 3 and \ > isinstance(aList[0][0], StringType) and \ > isinstance(aList[0][1], IntType) and \ > isinstance(aList[0][2], IntType): > flag = 0 > for i in xrange(numcols): > if aList[i][1] != wx.LIST_AUTOSIZE: > flag = 1 > self.InsertColumn(i, aList[i][0], > format=aList[i][2], width=aList[i][1]) > > So, I get the feeling that if I create my ColumnHeadings as a list of > [ "Column name", x, y] > where x and y are both integers, then it'll come through to this > InsertColumn method... > > But, what values are legitimate values? If x and y have to be ints, > how does that fit in with InsertColumn? I'm used to wx.LIST_AUTOSIZE > and so forth. There's a hint in the sample/multicolumnexample.py in the comments at the head. Playing around a bit with that, I think you pass in a list like [ ["header", width, format], ...] width is an integer value : -1 = auto_size positive value is an actual column width (note you must have ALL columns set to auto_size to get autosizing) format is one of wxLIST_FORMAT_LEFT : 0 wxLIST_FORMAT_RIGHT : 1 wxLIST_FORMAT_CENTRE : 2 Here's a snippet from my "play" code version of multicolumnexample.py (from on_loadButton_mouseClick I changed > self.components.theList.columnHeadings = items[0] > self.components.theList.items = items[1:] to > self.components.theList.columnHeadings = items[0] > headings = self.components.theList.GetColumnHeadingInfo() > print "here with", headings > headings[0][1] = 80 > headings[1][2] = 1 -- try various values here > self.components.theList.columnHeadings = headings > headings = self.components.theList.GetColumnHeadingInfo() > print "and now", headings > self.components.theList.items = items[1:] > P.S. I couldn't figure out the right way to use the wxLIST_FORMAT_* constants. I'm sure you should be able to do something like import wx and then use wx.wxLIST_FORMAT_LEFT but that didn't work - I finished up doing import wx print wx._controls.wxLIST_FORMAT_LEFT to check what the values were. -- Alex Tweedly http://www.tweedly.net -- No virus found in this outgoing message. Checked by AVG Anti-Virus. Version: 7.0.308 / Virus Database: 266.9.5 - Release Date: 07/04/2005 |
From: Liam C. <cy...@gm...> - 2005-04-11 23:38:23
|
Hi Alex,=20 There's a hint in the sample/multicolumnexample.py in the comments at the head. Playing around a bit with that, I think you pass in a list like [ ["header", width, format], ...] width is an integer value : -1 =3D auto_size positive value is an actual column width (note you must have ALL columns set to auto_size to get autosizing) format is one of wxLIST_FORMAT_LEFT : 0 wxLIST_FORMAT_RIGHT : 1 wxLIST_FORMAT_CENTRE : 2 On Apr 12, 2005 8:53 AM, Alex Tweedly <al...@tw...> wrote: >=20 > Liam Clarke wrote: >=20 > > Hello again, > > > > Feeling kind of silly, just looked more closely at MCL, and found > > lines 330-338 under the method > > _setColumnHeadings(self, aList): > > > > elif w =3D=3D 3 and \ > > isinstance(aList[0][0], StringType) and \ > > isinstance(aList[0][1], IntType) and \ > > isinstance(aList[0][2], IntType): > > flag =3D 0 > > for i in xrange(numcols): > > if aList[i][1] !=3D wx.LIST_AUTOSIZE: > > flag =3D 1 > > self.InsertColumn(i, aList[i][0], > > format=3DaList[i][2], width=3DaList[i][1]) > > > > So, I get the feeling that if I create my ColumnHeadings as a list of > > [ "Column name", x, y] > > where x and y are both integers, then it'll come through to this > > InsertColumn method... > > > > But, what values are legitimate values? If x and y have to be ints, > > how does that fit in with InsertColumn? I'm used to wx.LIST_AUTOSIZE > > and so forth. >=20 > There's a hint in the sample/multicolumnexample.py in the comments at > the head. > Playing around a bit with that, I think you pass in a list like > [ ["header", width, format], ...] > width is an integer value : > -1 =3D auto_size > positive value is an actual column width > (note you must have ALL columns set to auto_size to get autosizing) >=20 > format is one of > wxLIST_FORMAT_LEFT : 0 > wxLIST_FORMAT_RIGHT : 1 > wxLIST_FORMAT_CENTRE : 2 >=20 > Here's a snippet from my "play" code version of multicolumnexample.py > (from on_loadButton_mouseClick >=20 > I changed >=20 > > self.components.theList.columnHeadings =3D items[0] > > self.components.theList.items =3D items[1:] >=20 > to >=20 > > self.components.theList.columnHeadings =3D items[0] > > headings =3D self.components.theList.GetColumnHeadingInfo() > > print "here with", headings > > headings[0][1] =3D 80 > > headings[1][2] =3D 1 -- try various values here > > self.components.theList.columnHeadings =3D headings > > headings =3D self.components.theList.GetColumnHeadingInfo() > > print "and now", headings > > self.components.theList.items =3D items[1:] > > >=20 > P.S. I couldn't figure out the right way to use the wxLIST_FORMAT_* > constants. I'm sure you should be able to do something like > import wx > and then use wx.wxLIST_FORMAT_LEFT > but that didn't work - I finished up doing > import wx > print wx._controls.wxLIST_FORMAT_LEFT > to check what the values were. >=20 >=20 > -- > Alex Tweedly http://www.tweedly.net >=20 > -- > No virus found in this outgoing message. > Checked by AVG Anti-Virus. > Version: 7.0.308 / Virus Database: 266.9.5 - Release Date: 07/04/2005 >=20 >=20 Of course.... I should've tried -1... thanks for that Alex. Regards,=20 Liam Clarke --=20 'There is only one basic human right, and that is to do as you damn well=20 please. And with it comes the only basic human duty, to take the consequences.' |
From: Liam C. <cy...@gm...> - 2005-04-12 06:29:55
|
Hehe,=20 Just an update, having the columnHeading stuff in the resource file look=20 like this -=20 columnHeadings':[ [ 'Job number',-1,2], [ 'Inquiry date', -1,2], [ 'Job date', -1,2], [ 'Job time', -1,2], [ 'Fixed?', -1,2], [ 'Job type', -1,2], [ 'Job subtype'-1,2], ],=20 which I thought would work gives this error -=20 Traceback (most recent call last): File "C:\Python23\lib\site-packages\PythonCard\widget.py", line 402, in=20 _dispatch handler(background, aWxEvent) File "C:\Python23\SEDB\search.py", line 61, in=20 on_searchResults_itemActivated (parent, clientWindow) =3D self.clientChild() File "C:\Python23\SEDB\search.py", line 69, in clientChild clientWindow =3D model.childWindow(parent, client.ClientDetails) File "C:\Python23\lib\site-packages\PythonCard\model.py", line 176, in=20 childWindow rsrc =3D resource.ResourceFile(filename).getResource() File "C:\Python23\lib\site-packages\PythonCard\resource.py", line 45, in=20 __init__ self.dictionary =3D util.readAndEvalFile(rsrcFileName) File "C:\Python23\lib\site-packages\PythonCard\util.py", line 33, in=20 readAndEvalFile return eval(txt, globals()) File "<string>", line 0, in ? TypeError: unsupported operand type(s) for -: 'str' and 'int' but, the following do work -=20 leftAligned =3D self.components.jobs.GetColumnHeadingInfo() centreAligned =3D [] for item in leftAligned: k =3D [item[0],item[1], 2] centreAligned.append(k) self.components.jobs.columnHeadings =3D centreAligned or foo =3D self.components.jobs foo.columnHeadings =3D [[item[0], item[1], 2] for item in=20 foo.GetColumnHeadingInfo()] Hmm.... Or am I doing the resource file part wrong? On Apr 12, 2005 11:38 AM, Liam Clarke <cy...@gm...> wrote: >=20 > Hi Alex,=20 >=20 > There's a hint in the sample/multicolumnexample.py in the comments at > the head. > Playing around a bit with that, I think you pass in a list like > [ ["header", width, format], ...] > width is an integer value : > -1 =3D auto_size > positive value is an actual column width > (note you must have ALL columns set to auto_size to get autosizing) >=20 > format is one of > wxLIST_FORMAT_LEFT : 0 > wxLIST_FORMAT_RIGHT : 1 > wxLIST_FORMAT_CENTRE : 2 >=20 > On Apr 12, 2005 8:53 AM, Alex Tweedly <al...@tw...> wrote: > >=20 > > Liam Clarke wrote: > >=20 > > > Hello again, > > > > > > Feeling kind of silly, just looked more closely at MCL, and found > > > lines 330-338 under the method > > > _setColumnHeadings(self, aList): > > > > > > elif w =3D=3D 3 and \ > > > isinstance(aList[0][0], StringType) and \ > > > isinstance(aList[0][1], IntType) and \ > > > isinstance(aList[0][2], IntType): > > > flag =3D 0 > > > for i in xrange(numcols): > > > if aList[i][1] !=3D wx.LIST_AUTOSIZE: > > > flag =3D 1 > > > self.InsertColumn(i, aList[i][0], > > > format=3DaList[i][2], width=3DaList[i][1]) > > > > > > So, I get the feeling that if I create my ColumnHeadings as a list of > > > [ "Column name", x, y] > > > where x and y are both integers, then it'll come through to this > > > InsertColumn method... > > > > > > But, what values are legitimate values? If x and y have to be ints, > > > how does that fit in with InsertColumn? I'm used to wx.LIST_AUTOSIZE > > > and so forth. > >=20 > > There's a hint in the sample/multicolumnexample.py in the comments at > > the head. > > Playing around a bit with that, I think you pass in a list like > > [ ["header", width, format], ...] > > width is an integer value : > > -1 =3D auto_size > > positive value is an actual column width > > (note you must have ALL columns set to auto_size to get autosizing) > >=20 > > format is one of > > wxLIST_FORMAT_LEFT : 0 > > wxLIST_FORMAT_RIGHT : 1 > > wxLIST_FORMAT_CENTRE : 2 > >=20 > > Here's a snippet from my "play" code version of multicolumnexample.py > > (from on_loadButton_mouseClick > >=20 > > I changed > >=20 > > > self.components.theList.columnHeadings =3D items[0] > > > self.components.theList.items =3D items[1:] > >=20 > > to > >=20 > > > self.components.theList.columnHeadings =3D items[0] > > > headings =3D self.components.theList.GetColumnHeadingInfo() > > > print "here with", headings > > > headings[0][1] =3D 80 > > > headings[1][2] =3D 1 -- try various values here > > > self.components.theList.columnHeadings =3D headings > > > headings =3D self.components.theList.GetColumnHeadingInfo() > > > print "and now", headings > > > self.components.theList.items =3D items[1:] > > > > >=20 > > P.S. I couldn't figure out the right way to use the wxLIST_FORMAT_* > > constants. I'm sure you should be able to do something like > > import wx > > and then use wx.wxLIST_FORMAT_LEFT > > but that didn't work - I finished up doing > > import wx > > print wx._controls.wxLIST_FORMAT_LEFT > > to check what the values were. > >=20 > >=20 > > -- > > Alex Tweedly http://www.tweedly.net > >=20 > > -- > > No virus found in this outgoing message. > > Checked by AVG Anti-Virus. > > Version: 7.0.308 / Virus Database: 266.9.5 - Release Date: 07/04/2005 > >=20 > >=20 > Of course.... I should've tried -1... thanks for that Alex. >=20 >=20 > Regards,=20 >=20 >=20 > Liam Clarke >=20 > --=20 > 'There is only one basic human right, and that is to do as you damn well= =20 > please. > And with it comes the only basic human duty, to take the consequences.'= =20 >=20 --=20 'There is only one basic human right, and that is to do as you damn well=20 please. And with it comes the only basic human duty, to take the consequences.' |
From: Michael S. <mik...@ya...> - 2005-04-12 18:25:46
|
The topic of platform-specific resource files made me wonder whether it is possible for a resource file to inherit from another resource file. If the differences between platform specific resources are relatively minor, I would think it would be simpler to inherit from a base resource and only include the components and properties to be changed. On a different topic, could someone remind me of the reasons why components are accessed from self.components rather than self? E.g. self.components.button1 vs. self.button1 If I allowed self to lookup self.components would this cause a problem with the program? I think I remember there being some discussion on this in the past, but I cannot find it in the archive. Thanks, Michael Find local movie times and trailers on Yahoo! Movies. http://au.movies.yahoo.com |
From: Andy T. <an...@ha...> - 2005-04-19 11:08:26
|
Michael Sorich wrote: > The topic of platform-specific resource files made me > wonder whether it is possible for a resource file to > inherit from another resource file. If the differences > between platform specific resources are relatively > minor, I would think it would be simpler to inherit > from a base resource and only include the components > and properties to be changed. > I'll leave someone more qualified to comment on that. > On a different topic, could someone remind me of the > reasons why components are accessed from > self.components rather than self? > E.g. self.components.button1 vs. self.button1 > If I allowed self to lookup self.components would this > cause a problem with the program? I think I remember > there being some discussion on this in the past, but I > cannot find it in the archive. > It's to differentiate them from the other properties a background may have. Essentially the components (as a set) are children of the background and not first class attributes, which it's name, title and size (for instance) are. > Thanks, > > Michael > [snip] Regards, Andy -- -------------------------------------------------------------------------------- From the desk of Andrew J Todd esq - http://www.halfcooked.com/ |
From: Kevin A. <al...@se...> - 2005-04-19 14:34:16
|
On Apr 12, 2005, at 11:25 AM, Michael Sorich wrote: > The topic of platform-specific resource files made me > wonder whether it is possible for a resource file to > inherit from another resource file. If the differences > between platform specific resources are relatively > minor, I would think it would be simpler to inherit > from a base resource and only include the components > and properties to be changed. You could probably do this manually, but the resourceEditor certainly doesn't support it. You would need to do your own logic that mirrors what PythonCard does with internationalResourceName to figure out the resource filenames; You can't use periods in filenames like we do if you want Python to be able to import the files, so instead of minimal.rsrc.py and minimal.win.rsrc.py you would want to use underscores: minimal_rsrc.py minimal_win_rsrc.py, which you could import. The current resource files are read in as text files and then run through eval() so anything eval() can handle is valid, including doing an import and then replacing certain elements of a list, dictionary, etc. Since your next question is probably going to be "Why don't we just change the resource file format and loader then?" the answer is installed base and "if it ain't broke, don't fix it". I think we should probably figure out the next evolution of the resource file format, whether it continues to be valid Python, XML, support subclassing, whatever, and then add support for that in PythonCard 1.x in addition to still supporting the old format. That process would be part of the PythonCard 2.0 discussion. You can easily do your own custom loading and such today, but like I said, the framework and tools won't know about a different format, so there is extra work for you. > On a different topic, could someone remind me of the > reasons why components are accessed from > self.components rather than self? > E.g. self.components.button1 vs. self.button1 > If I allowed self to lookup self.components would this > cause a problem with the program? I think I remember > there being some discussion on this in the past, but I > cannot find it in the archive. > > Thanks, > > Michael There is a very simple reason for this and its called name collision. If the components could be accessed as self.button1 then the names would need to be different than any methods or other attributes of the Background class, super and subclasses. There would probably be some other complications that would require __getattr__ and __setattr__ methods for Background and slow down and complicate all member accesses, but the name collision is the still the primary reason. ka |
From: Ed L. <ed...@le...> - 2005-04-12 11:08:44
|
On Apr 12, 2005, at 2:29 AM, Liam Clarke wrote: > columnHeadings':[ > =A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 [ 'Job = number',-1,2], > =A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 [ = 'Inquiry date', -1,2], > =A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 [ 'Job = date',=A0 -1,2], > =A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 [ 'Job = time', -1,2], > =A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 [ = 'Fixed?', -1,2], > =A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 [ 'Job = type', -1,2], > =A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 [ 'Job = subtype'-1,2], > =A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 ], > > which I thought would work gives this error - > [snip] > TypeError: unsupported operand type(s) for -: 'str' and 'int' You are missing a comma after 'Job subtype'. ___/ / __/ / ____/ Ed Leafe http://leafe.com/ http://dabodev.com/ |
From: Liam C. <cy...@gm...> - 2005-04-12 11:15:36
|
.....oh dear. I am very, very, embarrassed at the moment... I just spent twenty minutes= =20 writing a method to do this.... all because I missed a comma. Ack. But thanks, Ed. On Apr 12, 2005 11:08 PM, Ed Leafe <ed...@le...> wrote: >=20 > On Apr 12, 2005, at 2:29 AM, Liam Clarke wrote: >=20 > > columnHeadings':[ > > [ 'Job number',-1,2], > > [ 'Inquiry date', -1,2], > > [ 'Job date', -1,2], > > [ 'Job time', -1,2], > > [ 'Fixed?', -1,2], > > [ 'Job type', -1,2], > > [ 'Job subtype'-1,2], > > ], > > > > which I thought would work gives this error - > > [snip] > > TypeError: unsupported operand type(s) for -: 'str' and 'int' >=20 > You are missing a comma after 'Job subtype'. >=20 > ___/ > / > __/ > / > ____/ > Ed Leafe > http://leafe.com/ > http://dabodev.com/ >=20 >=20 > ------------------------------------------------------- > SF email is sponsored by - The IT Product Guide > Read honest & candid reviews on hundreds of IT Products from real users. > Discover which products truly live up to the hype. Start reading now. > http://ads.osdn.com/?ad_ide95&alloc_id=14396&opclick > _______________________________________________ > Pythoncard-users mailing list > Pyt...@li... > https://lists.sourceforge.net/lists/listinfo/pythoncard-users >=20 --=20 'There is only one basic human right, and that is to do as you damn well=20 please. And with it comes the only basic human duty, to take the consequences.' |