Hilfe für ein einfaches programm gesucht

Plattformunabhängige GUIs mit wxWidgets.
Antworten
arctos
User
Beiträge: 3
Registriert: Dienstag 13. März 2007, 17:07

Hallo, bin neu hier also nicht sauer sein falls es etwas ähnliches gibt und ichs übersehn habe..


worum es geht ist theoretisch ganz einfach, ich will ein kleines programm schreiben das ich selber erweitern kann. es soll eigentlich nur folgendes können und zwar wenn ich eine frage eingebe wie
z.b. F: wer ist unser bundespräsident? A: A. Merkel

natürlich will ich dir fragen und antworten selbst definieren können.

Von meinen damaligen zeiten aus QBasic her kenn ich zwar die befehle if, then, else, doch irgendwie funktioniert das ganze nicht so unter python.

zum abschluss will ich noch anmerken das ich das ganze dann wenn der frage-antwort katalog für mich fertiggestellt ist auch compilierenl.

ich muss zugeben das ich python gerade mal seit 2 minuten runtergeladen habe und diesbezüglich bestimmt noch weitere fragen habe und hoffe das ich dann auch weiterhin antworten von euch erhalte.

bis dann. vielen dank.

p.s. sollte vielleicht anmerken das ich ich python 2.5 runtergeladen habe.
encbladexp
User
Beiträge: 61
Registriert: Freitag 7. März 2003, 19:28
Kontaktdaten:

arctos hat geschrieben:Hallo, bin neu hier also nicht sauer sein falls es etwas ähnliches gibt und ichs übersehn habe..
Servus erstmal und willkommen im Forum.
arctos hat geschrieben: Von meinen damaligen zeiten aus QBasic her kenn ich zwar die befehle if, then, else, doch irgendwie funktioniert das ganze nicht so unter python.
Hast du vielleicht ein Codebeispiel? So kann man sich nur schlecht vorstellen was du machst...
arctos hat geschrieben: zum abschluss will ich noch anmerken das ich das ganze dann wenn der frage-antwort katalog für mich fertiggestellt ist auch compilierenl.
compilieren is nicht, python wird nicht compiliert, python ist eine scriptsprache... du kannst aber ne *.exe mit py2exe usw. erzeugen...

mfg Betz Stefan
arctos
User
Beiträge: 3
Registriert: Dienstag 13. März 2007, 17:07

Hi Stefan,

erstmal danke :)

nun denn, Codebeispiel ist momentan unmöglich da ich wie gesagt erst seit sehr kurzer Zeit Python habe und ich mehr oder weniger auf der Hp am lesen bin.

Das Prinziph sieht so aus:

nach Frage A (die ich stelle) soll mir dann Python Antwort A herausgeben oder falls überhaupt zwischen 1-? passenden eine auswählen wobei das mit der Auswahl nicht gleich am Anfangen mit dabei sein müsste sondern ich würde es auch nachträglich eingeben solange ich dann nicht das ganze neu schreiben mus.

Allerdings komme ich nicht ganz mit was den Punkt Skripsprache betrifft... Soweit ich das sehe und verstehe kann ich eine exe erzeugen und die dann am Ende auch einfach installieren, nur muss ich dann Python installiert haben oder geht das auch auf einem PC wo python nicht vorhanden ist?

Öffnet sich das Programm wie z.b. Solitär in einem Externen Fenster...?
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

arctos hat geschrieben:nun denn, Codebeispiel ist momentan unmöglich da ich wie gesagt erst seit sehr kurzer Zeit Python habe und ich mehr oder weniger auf der Hp am lesen bin.
Dann rate ich dir, die vielen verfügbaren Tutorials durchzuarbeiten. SOwas hilft oft.
arctos hat geschrieben:Allerdings komme ich nicht ganz mit was den Punkt Skripsprache betrifft... Soweit ich das sehe und verstehe kann ich eine exe erzeugen und die dann am Ende auch einfach installieren, nur muss ich dann Python installiert haben oder geht das auch auf einem PC wo python nicht vorhanden ist?
Letzteres.
arctos hat geschrieben:Öffnet sich das Programm wie z.b. Solitär in einem Externen Fenster...?
Wenn du eine GUI programmierst: ja, das ist kein Problem.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Jadawin
User
Beiträge: 12
Registriert: Samstag 17. Februar 2007, 18:34

arctos hat geschrieben:[...] und zwar wenn ich eine frage eingebe wie
z.b. F: wer ist unser bundespräsident? A: A. Merkel
Also wenn Du Dir das Programm für die Schule (als Spickzettelersatz) schreiben willst, dann mach Dich auf schlechte Noten gefasst, denn unser Bundespäsident ist Horst Köhler. Frau Merkel ist Bundeskanzlerin.
Sorry, das ist nicht böse gemeint, aber den Kommentar konnte ich mir einfach nicht verkneifen. :roll:

Doch zu Deinem Problem würde ich Dir, wie es auch Leonidas schon tat, raten, Dich erst einmal mit den Grundlagen von Python vertraut zu machen. Ein Programm das, zwar fest definierte, aber in natürlicher Sprache formulierte Fragen versteht, kann sich leicht zu einem Riesenprojekt auswachsen.

Ich nehme mal an, dass Du die Frage nicht immer exakt so eingeben willst, wie sie definiert ist. Dazu musst Du die Frage nach besonderen Stichworten durchsuchen.

z.B.
F: Wer ist unser Bundespräsident?
A: Host Köhler

F: Wie ist der Name des Bundespräsidenten?
A: Horst Köhler

Du müsstest die Frage nach grammatischen Grundregeln zerlegen, um dann die Stichworte zu erkennen. In dem Beispiel wären das
"Wer" und "Bundespräsident" bzw. "Wie", "Name" und "Bundespräsidenten"

Aber bevor ich jetzt anfange über die Datenbank zu schreiben, über die Du die Verknüpfung herstellen müsstest, erinnere ich mich gerade daran, dass Du Python noch nicht wirklich kennst und das wohl auch mehr ist, als Du haben wolltest.

Also:
Wenn Du die Fragen immer genauso formulierst, wie sie vorgegeben sind (oder besser: sie aus einer Drop-Down-Liste auswählst), dann ist es mit wxPython kinderleicht die passende Antwort anzuzeigen. Schau Dir am besten die Demos an, die bei wxPython dabei sind.

Einen schönen Tag noch ...
Coding rule 1: A Computer will only do what you told him to do, not what you want him to do.
Therefore: Very often the problem sits right in front of the keyboard.
Benutzeravatar
Sr4l
User
Beiträge: 1091
Registriert: Donnerstag 28. Dezember 2006, 20:02
Wohnort: Kassel
Kontaktdaten:

@Jadawin das mit Schule und Note wollte ich auch schreiben ;-)

wenn ich zuhause bin editir ich den code rein aber meine Pause ist zu ende sehe ich gerade. Tztztz also wir sehen uns in 90-120min ;-)
Jadawin
User
Beiträge: 12
Registriert: Samstag 17. Februar 2007, 18:34

@arctos
Also ich hab mal in einer freien Minute (eigentlich waren es 5) bissel rumprobiert.
Das ist einfach nur "qick'n'dirty", aber vielleicht reicht Dir das schon.
Es geht noch sehr viel eleganter, aber das überlasse ich Dir. :wink:
Ich hoffe, es hilft Dir dabei, Python zu lernen.

Code: Alles auswählen

import wx

fragenListe = [
    'Warum?'
  , 'Weshalb?'
  , 'Was ist der Sinn des Lebens?'
]

antwortenListe = [
    'Darum'
  , 'Deshalb'
  , '42'
]

class theMainFrame(wx.Frame):
    def __init__(self,*args,**kwargs):
        wx.Frame.__init__(self,*args,**kwargs)
        self.SetSize(wx.Size(320,200))
        self.panel = wx.Panel(self)
        self.frage = wx.Choice(self.panel,-1,pos=(10,10), choices=fragenListe);
        self.antwort = wx.StaticText(self.panel,-1,pos=(10,40));
        self.Bind(wx.EVT_CHOICE, self.OnChoice, self.frage)
        return

    def OnChoice(self, aEvent):
        self.antwort.SetLabel(antwortenListe[aEvent.GetInt()])
        return;

app = wx.PySimpleApp()
myFrame = theMainFrame(None)
myFrame.Show()
app.MainLoop();
Viel Spass ...
Coding rule 1: A Computer will only do what you told him to do, not what you want him to do.
Therefore: Very often the problem sits right in front of the keyboard.
arctos
User
Beiträge: 3
Registriert: Dienstag 13. März 2007, 17:07

erstmal vielen dank für eure zahlreichen antworten. bin gerade dabei und acker mal paar tutorials durch. hab auch festgestellt das das ganze sehr komplex ist und es wohl einige zeit dauern wird bis das ganze so läuft wie ich es mir gedacht habe... hoffe ihr unterstützt mich auch weiterhin.


Danke für den code Jadawin. muss zugeben ist schon fast das was ich gesucht habe allerding müsste nur die handhabung geändert werden und zwar das ich nicht auswählen brauche sondern wie in einer suchfunktion begriffe eingebe und er es mir ausgibt.
gibt es eine möglichkeit eine große menge von begriffen schnell reinzukopieren? schreiben ist ja ok aber das würde zig stunden in anspruch nehmen...
Jadawin
User
Beiträge: 12
Registriert: Samstag 17. Februar 2007, 18:34

Hallo arctos,

ich bin selbst erst relativ neu bei Python und wxPython.
Vielleicht kann ja mal ein etwas erfahrenerer Nutzer hier etwas dazu sagen, ob es eine (wx)Python-Komponente gibt, die eine Volltextsuche über eine gegebene Datenmenge erlaubt?

Aber mal noch was anderes:
Ich will Dich ja nicht von Deinem (lobenswerten) Vorhaben abbringen, Python zu lernen, aber hast Du schon einmal von sogenannten "Help-Compilern" gehört? (einfach mal "help compiler" in eine Suchmaschine eingeben)
Damit kann man Hilfedateien (auch für Windows - und da Du eine EXE bauen willst, nehme ich an, bei Dir geht es nur um Windows) erstellen. Sicher kennst Du die Windows-Hilfe. Die bringt die Suchfunktion nach einzelnen Worten gleich mit.
Somit bräuchtest Du nur so eine Windows-Hilfe-Datei mit Deinen Fragen und Antworten füllen (mit Hilfe des "Help-Compilers") und hättest nach dem "compilieren" eine Datei, die Du als Windows-Hilfe öffnen und bei der Du dadurch alle Funktionen der Windows-Hilfe nutzen könntest (inklusive Suchfunktion).

Wenn Du jedoch das Programm als Lernprojekt für Python schreiben willst, dann solltest Du Dich auf jeden Fall auch mit Datenbankhandling unter Python beschäftigen.
Denn grosse Datenmengen verwaltet man am besten in einer Datenbank.

Zum Thema "schnell reinkopieren" kommt es immer darauf an, in welchem Format Deine Fragen und Antworten gespeichert sind und von wo Du die Daten kopieren willst.
Du könntest Dir aber in jedem Fall eine Import-Funktion in Dein Programm einbauen, mit der Du dann die Daten aus einem (fast) beliebigen Format einlesen und übernehmen könntest.

Das klingt ganz so, als wäre das Programm schon einigermassen anspruchsvoll für einen Anfänger. Aber: Man wächst ja an seinen Aufgaben. Und hast Du's erstmal geschafft, bist Du auf jeden Fall ein besserer Programmierer als vorher. :D
Coding rule 1: A Computer will only do what you told him to do, not what you want him to do.
Therefore: Very often the problem sits right in front of the keyboard.
Antworten