Problem?

Hier werden alle anderen GUI-Toolkits sowie Spezial-Toolkits wie Spiele-Engines behandelt.
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Die Fehlermeldung sagt dir, dass nur folgendes geht:

Code: Alles auswählen

>>> (10,1) + (1,2)
(10, 1, 1, 2)
und nicht das, was du versuchst:

Code: Alles auswählen

>>> (10,1) + 1
Traceback (most recent call last):
  File "<input>", line 1, in <module>
TypeError: can only concatenate tuple (not "int") to tuple
Benutzeravatar
Weltbesiedler
User
Beiträge: 103
Registriert: Dienstag 2. Februar 2010, 18:44
Wohnort: Bayern

Kapier ich nicht. Was darf ich da jetzt einsetzen?
Benutzeravatar
gkuhl
User
Beiträge: 600
Registriert: Dienstag 25. November 2008, 18:03
Wohnort: Hong Kong

Am besten du ersetzt hier nichts, sondern legst den Code beiseite und arbeitest das offizielle Tutorial durch. Das mag vielleicht ein paar Wochen Zeit in Anspruch nehmen, aber danach solltest du verstehen. Auf deutsche gibt es z.B. A Byte of Python.

Ich bin gerade in Versuchung dir zwei Zeilen Code unterzuschieben, der deine gesamte Festplatte löscht, wenn du ihn ausprobierst... Nur um mal deutlich zu machen, dass man nicht Copy-Paste programmieren sollte! :evil:
BlackJack

@Weltbesiedler: Was soll `x` denn darstellen und was soll `x + 1` denn bewirken?
Benutzeravatar
Weltbesiedler
User
Beiträge: 103
Registriert: Dienstag 2. Februar 2010, 18:44
Wohnort: Bayern

Das Byte of Python hab ich schon mal durchgelsen, im Prinzip geht es in meinem Buch um das gleiche. Also Hello World, Programmieren für Kids und andere Anfänger.
Benutzeravatar
Weltbesiedler
User
Beiträge: 103
Registriert: Dienstag 2. Februar 2010, 18:44
Wohnort: Bayern

Und das offizielle Tutorial kapier ich eh nicht, weil ich noch nicht so gut englisch kann.
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Weltbesiedler hat geschrieben:Und das offizielle Tutorial kapier ich eh nicht, weil ich noch nicht so gut englisch kann.
Dann solltest du vielleicht mal einen Blick in cofis Signatur werfen.
Das Leben ist wie ein Tennisball.
Benutzeravatar
Weltbesiedler
User
Beiträge: 103
Registriert: Dienstag 2. Februar 2010, 18:44
Wohnort: Bayern

Und wo ist da jetzt die gesamte Übersetzung des originalen Python Tutorials? Da gibt es ja blos immer einzelne Links.
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Hier und es verhaelt sich genauso wie die englische Version Hier
Benutzeravatar
Weltbesiedler
User
Beiträge: 103
Registriert: Dienstag 2. Februar 2010, 18:44
Wohnort: Bayern

Ah ok danke. Werde das mal durcharbeiten.
Benutzeravatar
Weltbesiedler
User
Beiträge: 103
Registriert: Dienstag 2. Februar 2010, 18:44
Wohnort: Bayern

Das ist doch das Tutorial für Python 3.1. Ich habe aber die Python Version 2.5.
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Und? Hauptsache, du arbeitest überhaupt ein Tutorial durch. Die meisten Sachen sind vollkommen identisch. Das einzige, über das du wahrscheinlich stolpern wirst ist, dass print ab Version 3 eine Funktion ist.
Das Leben ist wie ein Tennisball.
Benutzeravatar
Weltbesiedler
User
Beiträge: 103
Registriert: Dienstag 2. Februar 2010, 18:44
Wohnort: Bayern

OK danke für alle Informationen.
Benutzeravatar
Weltbesiedler
User
Beiträge: 103
Registriert: Dienstag 2. Februar 2010, 18:44
Wohnort: Bayern

So neues Problem:

Code: Alles auswählen

import pygame,sys
screen = pygame.display.set_mode ((1920,1080),pygame.FULLSCREEN)
screen.fill = ((255,255,255))

while True:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            sys.exit
        elif event.type == pygame.KEYDOWN:
            if event.key == pygame.K_ESCAPE:
                sys.exit
Man wieso finde ich den Fehler selbst nicht? Mich regt das auf, wenn ich da sinnlos Zeit vergeude um diesen blöden Fehler zu suchen.

screen.fill = (255,255,255)
AttributeError: 'pygame.Surface' object attribute 'fill' is read-only
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Nun: Das was du vorhast geht nicht. Da musst du dir mal die API-Dokumentation von pygame anschauen, wie man das macht was du vorhast - oder warten bis jemand mit Pygame-Kenntnissen vorbei kommt.
Du kannst im uebrigen ein Klammerpaar weglassen.
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Weltbesiedler hat geschrieben:Man wieso finde ich den Fehler selbst nicht?
Google ist dir aber schon ein Begriff, oder?
Das Leben ist wie ein Tennisball.
Benutzeravatar
Weltbesiedler
User
Beiträge: 103
Registriert: Dienstag 2. Februar 2010, 18:44
Wohnort: Bayern

Also eure Antworten sind mir keine Hilfe. Ja, Google ist mir ein Begriff. Bis jetzt habe ich das mit der screen.fill Methode immer gemacht, und es ging auch immer, bis jetzt...
BlackJack

@Weltbesiedler: Dann schau Dir mal an wie es bei Dir mal funktioniert hat und vergleiche das mit der Zeile wie Du das jetzt versuchst. Oder sag mal wie Du darauf kommst, dass Du die `fill()`-Methode da *aufrufst* -- das tust Du nämlich nicht.
Benutzeravatar
/me
User
Beiträge: 3556
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

Weltbesiedler hat geschrieben:Also eure Antworten sind mir keine Hilfe. Ja, Google ist mir ein Begriff. Bis jetzt habe ich das mit der screen.fill Methode immer gemacht, und es ging auch immer, bis jetzt...
Ich glaube nicht, dass man die fill-Methode bisher überschreiben konnte und vermute, dass du sie früher immer aufgerufen hast.

Die Fehlermeldung ist doch ziemlich eindeutig: AttributeError: 'pygame.Surface' object attribute 'fill' is read-only.
Benutzeravatar
C4S3
User
Beiträge: 292
Registriert: Donnerstag 21. September 2006, 10:07
Wohnort: Oberösterreich

@Weltbesiedler:
Was du da tust, ist "screen.fill" so zu verwenden, als wäre "fill" eine Variable, der du den Wert (255,255,255) zuweist. Das geht aber nicht, weil "fill" eben keine Variable, sondern eine Methode des Objektes "screen" ist.
Hilft dir das weiter?
Also nicht

Code: Alles auswählen

screen.fill = (255,255,255)
sondern

Code: Alles auswählen

screen.fill((255,255,255))
, ok?
Unterschied erkannt!?

Wenn ich die letzten drei Seiten so durchlese, scheint mir auch, dass es dir an gaaaanz grundlegenden Sachen fehlt, die du um deinetwillen erst mal wirklich lesen, durcharbeiten und verstehen solltest.

Ach und noch was (das fällt mir manchmal auf, wenn ich hier so mitlese, was ich oft tue, auch wenn ich selten was schreibe):
Die Leute hier sind wirklich alle schwer in Ordnung. Keiner will dich in irgendeiner Weise ärgern. Die Leute geben dir Hilfe, dir selbst zu helfen (was Überhaupt die beste Form von Hilfe ist). Beim Programmieren ist es eben so, dass man selber verstehen muss, was man tut. Stupides Abtippen von Codebeispielen hilft einfach nicht.
Wenn dir angeraten wird, Dieses oder Jenes zu lesen/durchzuarbeiten, dann seh' das bitte als gut gemeinten Rat. Die Leute können sehr oft sehr schnell einschätzen, welchen Wissenstand jemand hat und was er noch lernen muss, um sein Problem zu verstehen und selbst lösen zu können.

Also, versuch' bitte, in kleinen Schritten, Stück für Stück dazu zu lernen. Und wenn du bei den Grundlagen Schwierigkeiten hast, arbeite gerade daran doppelt so hart!
Wenn dir Begriffe (Methoden, Funktionen, Objekte,...) nicht vertraut sind, dann frag' bitte nach. Es ist keine Schande, etwas nicht zu wissen. Es ist ja noch nicht mal schlimm, wenn man etwas nicht auf Anhieb zu versteht.
Aber est ist traurig, wenn man aufgibt, oder erst gar nicht fragt!

Also, Kopf hoch (und Augen auf den Monitor gerichtet)!
Gruß!
Antworten