(Python) Göra en GUI miniräknare - importera från Photoshop?

Permalänk

(Python) Göra en GUI miniräknare - importera från Photoshop?

Hej, jag vill göra en miniräknare i Python som funkar som en fysisk miniräknare att man trycker på 1+1 och får svaret 2.
Exempel https://www.google.se/search?q=python+calculator+gui&source=l...:
Det första jag behöver hjälp med är den grafiska delen. Vilket är det bästa och lättaste GUI programmet? Och funkar det att man gör den grafiska miniräknaren i Photoshop och sedan importerar till ett kodningprogram där man kan ska själva kodningen? Jag har försökt kolla på internet men hittade inget bra.

Permalänk
Medlem

@den nordiska vikingen: Det där är väl bara 16 knappar och en text-ruta för svaret?

Permalänk
Skrivet av ToddTheOdd:

@den nordiska vikingen: Det där är väl bara 16 knappar och en text-ruta för svaret?

Ja men jag har knappt kodat innan därför behöver jag hjälp

Skickades från m.sweclockers.com

Permalänk
Medlem

Hej

Finns några ramverk att välja på https://opensource.com/resources/python/gui-frameworks

Exempelvis PyQt, Tkinter och WxPython.

Eller kanske med QT http://doc.qt.io/qt-5/qtwidgets-index.html

Här är en av många intros: https://projects.raspberrypi.org/en/projects/getting-started-...

Men måste det vara i Python?

Skulle jag göra ett GUI så skulle jag inte använda Python för det, visst är Python bra till många andra uppgifter men min personliga erfarenhet säger att det finns andra språk som gör GUI bättre.

Att använda Photoshop för att konvertera bilder till knappar är lite överkurs i början. Enklast är om du lär dig hur man
placerar ut de knappar som redan finns tillgängliga i det ramverk du kommer använder.

Permalänk
Keeper of Traditions

Har man knappt kodat innan så känns det dumt att blanda in GUI det första man gör. Gör miniräknarens logik först och få allt att fungera, sen kan man börja fundera på ett tillhörande GUI.

Jag antar att det är för att lära sig programmering.

Visa signatur

|| AMD Ryzen 9800X3D || Asus RTX 4070 TI Super TUF || Samsung 990 PRO 4TB || Kingston Fury CL30 64GB || Corsair RM 850x || Antec P183 || Asus G-Sync RoG Swift PG279Q || Dell XPS 15 ||

The Force is like Duct Tape, it has a light side, a dark side, and holds the universe together.

Permalänk
Datavetare

Är rätt ringrostig på Python, men skulle säga att för enklare "lära mig programmera" har Tkinter den stora fördelen i att vara det närmaste man kommer "inbyggt GUI stöd i Python" man kan komma.

Här är en litet quick-n-dirty program som drar upp ett gäng knappar i ett fönster och associerar en händelsehanterar med varje.

#!/usr/bin/env python # -*- coding: utf-8 -*- from Tkinter import * win = Tk() win.title("Calculator") win.grid() ans = Label(text = "TODO: show calc") ans.grid(row = 0, columnspan = 5, ipadx = 5, ipady = 5) class CalcBtn: def __init__(self, win, name): self.name = name self.btn = Button(win, text = btnName, height = 2, width = 2) self.btn.grid(row = rowIdx + 1, column = colIdx) self.btn.bind("<Button-1>", self) def __call__(self, event): print "Button " + self.name + " pressed" calcLayout = ( ("←", "CE", "C", "±", "√"), ("7", "8", "9", "/", "%"), ("4", "5", "6", "*", "1/x"), ("1", "2", "3", "-", "x!"), ("0", "00", ".", "+", "="), ) for rowIdx, rowDesc in enumerate(calcLayout): for colIdx, btnName in enumerate(rowDesc): CalcBtn(win, btnName) win.mainloop()

Ser ut så här när man kör

Finns rätt mycket att putsa på... T.ex. stöd för breda/höga knappar, eventuellt använda en bild från Photoshop (har inte gjort det själv i Tkinter så kan inte bidra här) etc.

Visa signatur

Care About Your Craft: Why spend your life developing software unless you care about doing it well? - The Pragmatic Programmer

Permalänk

Jag gjorde som Dunderklumpen föreslog att bara göra själva koden och ingen GUI, vilket nog var smart för efter Yoshmans inlägg blev jag rätt snurrig haha.
Här är en av koderna jag gjorde som räknar ut en cirkels omkrets efter att diametern har skrivits in. Jag skrev koderna som att dom var menade för GUI.
>>> print ("Det här verktyget hjälper dig att räkna ut arean av en cirkel")
Det här verktyget hjälper dig att räkna ut arean av en cirkel
>>> print ("Skriv in cirkelns diameter i centimeter")
Skriv in cirkelns diameter i centimeter
>>> diameter=28
>>> radie=diameter/2
>>> area=radie*radie*3.14
>>> area
615.44
>>> print ("Arean av cirkeln är") + str(area)
Arean av cirkeln är615.44
>>> kvadratmeter=area/100
>>> kvadratmeter
6.154400000000001
>>> print ("Arean av cirkeln i kvadratmeter är ") + str(kvadratmeter)
Arean av cirkeln i kvadratmeter är 6.1544
>>>

Sen skrev jag en kod som räknar ut vad x är
>>> a=1872
>>> b=743
>>> print str(b) + ("+x") + ("=") + str(a)
743+x=1872
>>> print ("Vilket tal är x?")
Vilket tal är x?
>>> x=a-b
>>> x
1129

Permalänk

Vet ni något mer jag kan göra som är medelsvårt typ eller som har en längre kod än det jag skrev?
Det är bara bra om det är svårt så jag får klura lite men inte för svårt bara..
Tack för all hjälp

Permalänk

@Yoshman: Jag får återkomma till den tråden och läsa ditt inlägg när jag blivit en bättre kodare

Permalänk
Skrivet av den nordiska vikingen:

Vet ni något mer jag kan göra som är medelsvårt typ eller som har en längre kod än det jag skrev?
Det är bara bra om det är svårt så jag får klura lite men inte för svårt bara..
Tack för all hjälp

Ser ut som att du börjar lära dig grunderna så här kommer en bra sida:
https://open.kattis.com/

Här finns massvis med bra uppgifter, allt från lätta till svåra.
Men något du borde läsa på om är moduler i python, vad som kan importeras, hur du installerar modules, importerar dom osv.
När du gjort lite uppgifter på kattis och sen lärt dig om modules. Typ: "Tkinter". Det finns oftast moduler som löser mycket av det man vill ha, som GUI, matematik, kryptering osv. Det gäller bara att lära sig söka efter det man vill ha och sen lära sig läsa dokumentationen alternativt deras kod om dom inte har bra dokumentation.

Permalänk

@den nordiska vikingen: En sajt i samma stil som Kattis är CodeWars. Där får du små uppgifter att lösa och när du klarat uppgiften får du se hur andra har löst samma uppgift. Det brukar vara mycket lärorikt att se andra lösningar och jämföra med sin egen.

Permalänk
Keeper of Traditions
Skrivet av den nordiska vikingen:

Vet ni något mer jag kan göra som är medelsvårt typ eller som har en längre kod än det jag skrev?
Det är bara bra om det är svårt så jag får klura lite men inte för svårt bara..
Tack för all hjälp

Om det är matematiska problem du är ute efter så finns Project Euler.
De kan vara lite knepiga, men det är bara att hoppa över dem man fastnar på och pröva ett annat problem.

Visa signatur

|| AMD Ryzen 9800X3D || Asus RTX 4070 TI Super TUF || Samsung 990 PRO 4TB || Kingston Fury CL30 64GB || Corsair RM 850x || Antec P183 || Asus G-Sync RoG Swift PG279Q || Dell XPS 15 ||

The Force is like Duct Tape, it has a light side, a dark side, and holds the universe together.

Permalänk
Medlem
Skrivet av den nordiska vikingen:

Vet ni något mer jag kan göra som är medelsvårt typ eller som har en längre kod än det jag skrev?
Det är bara bra om det är svårt så jag får klura lite men inte för svårt bara..
Tack för all hjälp

Du kan ju göra en riktig miniräknare som följer PEMDAS https://en.m.wikipedia.org/wiki/Order_of_operations
Hur långt du följer är ju upp till dig.

Skickades från m.sweclockers.com

Permalänk
Skrivet av Ingetledigtnamn:

@den nordiska vikingen: En sajt i samma stil som Kattis är CodeWars. Där får du små uppgifter att lösa och när du klarat uppgiften får du se hur andra har löst samma uppgift. Det brukar vara mycket lärorikt att se andra lösningar och jämföra med sin egen.

Skrivet av Dunder:

Om det är matematiska problem du är ute efter så finns Project Euler.
De kan vara lite knepiga, men det är bara att hoppa över dem man fastnar på och pröva ett annat problem.

Båda dessa hemsidorna är bra att lära sig på. kan tillägga: Daily Programmer