Nieuws:

Welkom, Gast. Alsjeblieft inloggen of registreren.
Heb je de activerings-mail niet ontvangen?

Auteur Topic: Dit script wil ik afmaken met een GUI. Kan ik daarbij hulp krijgen?  (gelezen 1075 keer)

Offline bart85

  • Lid
  • Steunpunt: Nee
Dit script heb ik lang geleden in C++ geschreven. Om er een mooi en eenvoudig GUI bij te schrijven heb ik het naar python vertaald.
De reden dat ik het heb geschreven is dat ik moeite had met het leren van woorden. Met dit script kan ik mezelf overhoren. Het script werkt. Met een GUI wil ik het helemaal afmaken.
De indeling van de woordenlijst (file='words') is met twee kolommen. De eerste een woord in taal1 en de tweede de vertaling daarvan naar taal2 in de tweede kolom (tab gescheiden). Eenvoudig, dus.
#!/usr/bin/env python3

import random
import subprocess

# Type beschrijft een woord met de bijbehorende vertaling
class vertaling:
def __init__(self, woord1='', woord2=''):
self.woord1 = woord1
self.woord2 = woord2

# Type met lijst van woorden met informatie over de lijst
class woordenlijst:

# Dit laad de woorden vanuit self.file
def readfile(self):
self.woorden = []
# bestand openen.
with open(self.file) as f:
for line in f:
line = line.rstrip()
line = line.split('\t')
a = vertaling()
if len(line) >= 2:
a.woord1 = line[0]
a.woord2 = line[1]
self.woorden.append(a) # toevoegen van vertaling aan woorden[]
# init van nieuwe lijst.
def __init__(self,file='words',taal1='Nederlands',taal2='Engels'):
self.taal1 = taal1
self.taal2 = taal2
self.file = file
self.readfile()
# vraag stellen en nakijken.
def vraag(self,richting, id):
if richting:
juist = self.woorden[id].woord2
print('Vertaal {0} naar {1}.'.format(self.woorden[id].woord1,self.taal2))
else:
juist = self.woorden[id].woord1
print('Vertaal {0} naar {1}.'.format(self.woorden[id].woord2,self.taal1))
ans = input()
# Geeft terug of het antwoord juist is.
if ans == juist:
return('juist')
else:
return('fout')
# willekeurig de lijst overhoren.
def overhoring(self):
l = len(self.woorden)
s = list(range(l))
while len(s) != 0:
r = random.choice(s)
richting = bool(random.getrandbits(1))
print('Antwoord is ' + self.vraag(richting,r))
s.remove(r)
# De woordenlijst openen in gedit voor bewerking
def openwordsfile(self):
proc = subprocess.Popen(['gedit', self.file])
proc.wait
# opnieuw woordenlijst laden.
self.readfile()

# object van de class woordenlijst
lijst = woordenlijst()

# starten met de volgende opdracht
lijst.overhoring()
Als Linux niet goed genoeg vind, verander de source code.

Offline niekn

  • Lid
    • omega-xis
  • Steunpunt: Nee
Re: Dit script wil ik afmaken met een GUI. Kan ik daarbij hulp krijgen?
« Reactie #1 Gepost op: 2016/05/08, 09:53:34 »
kun je niet beter de C++ versie gebruiken en dan met QT-creator werken?
in QT-creator kun je de knoppen/elementen gewoon op het scherm slepen en daarna klik je er rechts op en kies je "go to slot -> clicked"
je krijgt dan een event-handler waar je in kunt zetten wat het moet doen als je op die knop hebt geklikt.
https://www.qt.io/ide/

Offline bart85

  • Lid
  • Steunpunt: Nee
Re: Dit script wil ik afmaken met een GUI. Kan ik daarbij hulp krijgen?
« Reactie #2 Gepost op: 2016/05/10, 21:28:11 »
Mijn python programma is mooier en leesbaarder dan die van c++. Voordeel van python is dat ik met het programmeren geen rekening hoef te houden met het limiet van variabelen. Bovendien is QT beschikbaar voor python. Hoe de GUI in een editor neerzet is mij niet bekend. De buttons linken naar python code,  de infrastructuur hiervan is mij onduidelijk.
Vervolgens de vraag: welke editor is aan te raden?
Als Linux niet goed genoeg vind, verander de source code.

Offline MKe

  • Lid
  • Steunpunt: Nee
Re: Dit script wil ik afmaken met een GUI. Kan ik daarbij hulp krijgen?
« Reactie #3 Gepost op: 2016/05/14, 10:27:34 »
Een tekst editor. Voor simpele gui met je echt niet beginnen aan een sleur-n-pleur editor. Bovendien is het erg leerzaam om het zelf te doen.
Een belangrijkere vraag is welke gui library je gaat gebruiken, QT, gtk of de in python ingebouwde tkinter ondersteuning ?

Offline erik1984

  • Lid
    • erik1984
  • Steunpunt: Nee
Re: Dit script wil ik afmaken met een GUI. Kan ik daarbij hulp krijgen?
« Reactie #4 Gepost op: 2016/05/15, 17:40:54 »
Als je zelf met PyQt aan de slag wil is deze tutorial misschien wel interessant: http://zetcode.com/gui/pyqt4/introduction/ . Deze code kun in elke editor gebruiken, je bouwt de schermpjes gewoon in de code op. Bij simpele applicaties kan dat prima. Deze is dan wel voor PyQt 4 maar  de code werkt ook nog wel in PyQt 5. In *buntu 14.04 kun je ze allebei nog gebruiken maar het is denk ik beter om direct voor Qt5 te gaan bij nieuwe applicaties.