Gå til innhold

Anbefalte innlegg

Heisann! Sitter i sommerferien og prøver å bli litt mer stø i python.
Prøver å lage et enkelt program som får opp to bilder eller tekst, også kan brukeren klikke
på det bildet hun foretrekker. For eksempel velge mellom banan eller pære hva som er best.
Når beste frukt er valgt, skal det dukke opp to nye frukter.

 

Ideen min var å lage en bakgrunn som vist i figuren under. For deretter å få tekst (i første omgang) til å dukke opp på skjermen, ved klikk. Slik som koden står nå fungerer den, men jeg klarer virkelig ikke få hverken bilder av frukt, eller tekst til å dukke opp på skjermen. Er det noen som har noen tips?

 

Deler av koden er noe lang da jeg ønsker at vinduet skal være skalerbart. Ellers er vel resten helt elementert..

 

post-115358-0-20959300-1435668019_thumb.gif
 

from Tkinter import *

from PIL import Image, ImageTk

root = Tk()
root.title("Title")
root.geometry("600x600")
root.configure(background="black")

class Example(Frame):
    def __init__(self, master, *pargs):
        Frame.__init__(self, master, *pargs)

        self.image = Image.open("iceHockey5.gif")
        self.img_copy= self.image.copy()


        self.background_image = ImageTk.PhotoImage(self.image)

        self.background = Label(self, image=self.background_image)
        self.background.pack(fill=BOTH, expand=YES)
        self.background.bind('<Configure>', self._resize_image)

    def _resize_image(self,event):

        new_width = event.width
        new_height = event.height

        self.image = self.img_copy.resize((new_width, new_height))

        self.background_image = ImageTk.PhotoImage(self.image)
        self.background.configure(image =  self.background_image)

        
def vinnner( width , height , posX , posY):

    percentX = posX/float(width)
    percentY = posY/float(height)

   
    if 0.273178807947 < percentY < 0.746688741722 and 0.39238410596 < percentX < 0.610567514677:
        return "sirkel"
    elif percentX > 0.5:
        return "Vinner = 2"
    else:
        return "Vinner = 1"


def callback(event):
    
    root.update()
    root.xPos , root.yPos = event.x, event.y
    
    width  = root.winfo_reqwidth()
    height = root.winfo_reqheight()    
    
    print vinnner( width , height , root.xPos , root.yPos)

fruktliste = ['pære' , 'banan' , 'eple' , 'kiwi' , 'drue']

e = Example(root)

root.bind('<Motion>', motion)
root.bind("<Button-1>", callback)

e.pack(fill=BOTH, expand=YES)

root.mainloop()
Endret av Nebuchadnezzar
Lenke til kommentar
Videoannonse
Annonse
Er det noen som har noen tips?

Det du beskriver passer bedre som en web-applikasjon.

Til og lage dette passer mikro-rammeverk som Flask,Bottle,Pyramid,CherryPy... perfekt.

 

Når det gjelder Tkinter har jeg alltid holdt meg unna,pga utseende bruker ikke native widgets for OS.

WxPython,PyQt,PyGTK er alle greie og ikke vanskeligere og lære seg enn Tkinter.

WxPython har vært min favoritt,men som nevnt så kan en web-applikasjon være mye mer fleksibel.

 

For og vise litt det jeg prater om,kan jeg ta bildet ditt og bruke Image Map og lage linker når man trykker på bildet.

Bringer dette inn Flask som er en stor favoritt når det gjelder webutvikling i Python.

Blir til denne demo

 

Mikro-rammeverk er webutvikling uten støtte hjul,så basisk forståelse av HTML,CSS,JavaScript(jQuery) er greit og ha.

Men dette gir en veldig stort frihet,og man slipper krangle med store web-rammeverk som har 100-vis ting du aldri kommer til og bruke.

 

Koden for demo er kun dette,

kunne vært kortet inn enda mer,men viser import av CSS og jQuery som jeg ikke bruker i denne demoen.

server:

from flask import Flask, render_template
app = Flask(__name__,static_url_path = "")

@app.route('/')
def index():
  return render_template('index.html')

if __name__ == '__main__':
  app.run(debug=True)

index.html

<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <link rel=stylesheet type=text/css href="{{ url_for('static', filename='None') }}">
  <script src='http://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js'></script>  
</head>
<body>
  <div id="wrap">
    <h1 align="center">Meny</h1> 
    <center><img src="meny1.jpg" usemap="#logos"/></center> 
    <map name="logos">
      <area shape="circle" coords="178,213,140" href="http://dreamatico.com/data_images/apple/apple-7.jpg"/>
      <area shape="circle" coords="451,213,74" href="http://flask.pocoo.org/"/>
      <area shape="circle" coords="732,213,140" href="http://bottlepy.org/docs/dev/index.html"/> 
    </map>
  </div>
</body> 
</html>
Endret av snippsat
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...