Creating a Simple User Interface for a Function

CTSB01 scott.moore270 at gmail.com
Thu Jul 25 16:58:33 EDT 2013


On Thursday, July 25, 2013 3:19:27 PM UTC-4, Dave Angel wrote:
> On 07/25/2013 12:03 PM, CTSB01 wrote:
> 
> > I have the following code that runs perfectly:
> 
> 
> >       def psi_j(x, j):
> 
> >            rtn = []
> 
> >            for n2 in range(0, len(x) * j - 2):
> 
> >              n = n2 / j
> 
> >              r = n2 - n * j
> 
> >              rtn.append(j * x[n] + r * (x[n + 1] - x[n]))
> 
> >              print 'n2 =', n2, ': n =', n, ' r =' , r, ' rtn =', rtn
> 
> >            return rtn
> 
> No it doesn't run perfectly.  It'll get a syntax error on the print 
> 
> function call.  That's assuming you're still using Python 3.3.  You 
> 
> really need to start by specifying your environment, without making us 
> 
> look back through previous threads from you.
> 
> > This code takes a string x = [0,1,1,1,2] for example
> 
> That's not a string.  A string would be like
> 
>     xx = psi_j("0abcd1234")
> 
> Perhaps you mean list?  And is it a list of integers, or of arbitrary 
> 
> numbers?  Are there any constraints on the sizes or signs of those numbers?
> 
> > (it must always begin with 0) and a parameter j, say 2, and outputs a string (x = [0, 1, 2, 2, 2, 2, 2, 3] in this example).
> 
> > It does this in two steps: First it decomposes some number m into a multiple of j and a remainder.
> 
> Only if you replace the / with //.  Or just use the function divmod():
> 
>        n, r = divmod(n2, m)
> 
> >  Then it runs this decomposition through a function on the rtn.append line.
> 
> > Notice that this has cj - 1 terms where c is the number of terms in the input string and j is the parameter.  Normally, we would like it to be able to calculate cj terms.
> 
> > This is an issue with the function that I am more than happy to put aside for the moment.
> 
> > My key interest is to be able to make this program
> 
> So far you have a function, not a program.  If you put it in a text file 
> 
> and run it from python, it'll do nothing but display a syntax error 
> 
> message.  And when you fix that, it'll just run without doing anything.
> 
>   usable for someone who has no knowledge of programming.  In 
> 
> particular, I need some kind of user interface that prompts
> 
> > the user to input a string (ideally just by putting in numbers in the form 011123334 for example) and a parameter,
> 
> > and then displays the output sequence.  This is essentially what the program already does but the idea is to make it usable
> 
> > for even the most technologically disinclined.  Ideally it would do this without needing to run Python at all.
> 
> Then why are you asking on the Python forum?  Or perhaps you mean 
> 
> without him knowing he's running Python?  In that case, use a shebang 
> 
> line at the beginning, which will tell Linux to automatically invoke the 
> 
> specified program (or programming language in this case).
> 
> >  If anyone is able to make this happen in Python I would be eternally grateful.
> 
> If we assume you're running Python 3.3 on Linux, and the user is willing 
> 
> to us the terminal, then how about parsing the string from the command 
> 
> line he types?  You can access it as011123334 a string from sys.argv, 
> 
> and convert it to separate numbers.  Of course as it stands now, you 
> 
> cannot tell whether the user wanted
> 
>    0,1,1,1,2,3,3,3,4
> 
> or
> 
>    0, 111, 23, 3, 3, 4
>
> or something else.
> 
> DaveA

Sorry Dave, to answer each part of your response:

1) I decided to use Python 2.7, and I will be sure to specify this in all future threads.
2) It is a list of positive integers.  In fact, it is always going to be a list of positive increasing integers.
3) You're right.  What I meant was that if after running that bit of code I enter
>>> x = [0,1,2,3,4,5]
>>> psi_j(x,2) 
I will get output that matches my requirements.
4) Yes, sorry that's what I meant (if I understood correctly).  I was told elsewhere that I might want to try using tkinter.  Essentially I'm trying to create a user interface that allows the user to just type in a string 01112345 for example, and choose a parameter (say j=2) and then click a button to run the function.  I'd like to be able to run send a .exe file that the user can just open up and use with no further setup.  

So on top of the user interface I would also it looks like need to determine how to make Python change a string 01112345 into a list so that it does that automatically when the user clicks 'run'.  

Would a shebang still be the right way to go?  

Thanks again Dave, apologies for the ambiguity.



More information about the Python-list mailing list