in need of some help...
Alex Norton
ayjayn1101 at gmail.com
Fri May 10 04:23:40 EDT 2013
On Wednesday, 1 May 2013 13:15:28 UTC+1, Jens Thoms Toerring wrote:
> Alex Norton <ayjayn1101 at gmail.com> wrote:
>
> > thanks... ill take a look at the Qt event handling
>
>
>
> It's rather simple: instead of the program running through a
>
> sequence of steps, the program normally is basically doing
>
> nothing. It just reacts to events that normally come from
>
> the user, i.e. the user clicks on some icon or widget, or
>
> (s)he enters something via the keyboard. You etermine which
>
> of all the possible events to which widget are relevant to
>
> you, write handler functions for them and tell the widget
>
> to call some function when an event happens. The simplest
>
> case is a button: you want to react to it, so you write a
>
> function for what's to be done when it's clicked on and
>
> then tell Qt to call that function once it gets clicked
>
> (there are different events even for a simple push button,
>
> it can be clicked, just pushed, released etc.). And if you
>
> have set up everything for that you tell Qt to start waiting
>
> for events.
>
>
>
> So the steps are:
>
>
>
> 1. Tell Qt that this is a program using it
>
>
>
> app = QtGui.QApplication( sys.argv )
>
>
>
> 2. Create your graphical interface (what you seem to
>
> have done more or less)
>
>
>
> 3. Connect desired events (what's called "signals" in
>
> Qt lingo) for a certain widget to the function to be
>
> called with something like
>
>
>
> your_widget.clicked.connect( your_function )
>
>
>
> (replace 'clicked' with e.g. 'pushed' or 'released'
>
> when interested in a push or release signal instead)
>
>
>
> 4. Start the event loop (i.e. have Qt wait for the user
>
> to do something and call one of your functions if the
>
> user did something you're interested in) with
>
>
>
> app.exec_( )
>
>
>
> When this returns the game is over.
>
>
>
> So you don't wait for keyboard input with input() like in
>
> your original program but instead tell Qt to do the waiting
>
> for you and call the appropriate function you defined when
>
> something interesting happens.
>
>
>
> What you probably will have to change about the graphical
>
> interface is that instead of using QLabel widgets for 'Air',
>
> 'Earth', 'Fire', 'Water' to use e.g. QPushButtons since
>
> QLabels are rather static objects - they don't receive any
>
> "click" events and it's rather likely some kind of event
>
> like this is what you're going to want to react to. And for
>
> that QPushButtons seem to be the simplest choice to start
>
> with.
>
>
>
> So have an 'Air' button (let's call it 'bAir' and then do
>
>
>
> bAir.clicked.connect( air_clicked )
>
>
>
> after defining a function air_clicked() in which you deal
>
> with that case. that might be as simple as
>
>
>
> def air_clicked( ) :
>
> # Randomly pick one of 'air', 'fire', 'water' or 'earth'
>
>
>
> z = [ 'air', 'fire', 'water', earth' ][ random.randrange( 4 ) ]
>
>
>
> if z == 'air' :
>
> print( 'Stalemate' )
>
> elif z == 'water' :
>
> print( 'Air removes Water, you win!' )
>
> ...
>
>
>
> Now, when during the game the 'Air' button is clicked this
>
> function will get called.
>
>
>
> Of course, it might be nicer to have a "result" label some-
>
> where in the graphical interface which you set to the text
>
> instead of printing it out to the console. And you also will
>
> probably add some "Quit" button to end the game.
>
>
>
> Regards, Jens
>
> --
>
> \ Jens Thoms Toerring ___ jt at toerring.de
>
> \__________________________ http://toerring.de
how would i go about adding print outcomes of all options to a label ?
More information about the Python-list
mailing list