Transfert d'une variable d'un fichier python à un autre du meme projet

Peterduino -  
 vortex -
Bonjour,
Sauriez vous comment je pourrais transférer une variable que je definit dans main.py vers un autre fichier py du meme projet ?

Merci beaucoup d'avance,

Cdlt.



Voici mon code (c'est pour un jeu video) :

main.py


import pygame
import tkinter

def fenetre_tkinter():

    app = tkinter.Tk()
    app.title("Pyte Adventure Launcher")
    app.geometry("600x600+340+100")
    app["bg"]="green"

    perso = 0

    def set_perso1(): perso == 1

    def set_perso2(): perso == 2

    def set_perso3(): perso ==3

    p1 = tkinter.PhotoImage(file="perso1.png")
    btp1 = tkinter.Button(app, image=p1, width=64, height=77, bg="green", command=set_perso1()).place(x=168, y=50)

    p2 = tkinter.PhotoImage(file="perso2.png")
    btp2 = tkinter.Button(app, image=p2, width=64, height=77, bg="green", command=set_perso2()).place(x=268, y=50)

    p3 = tkinter.PhotoImage(file="perso3.png")
    btp3 = tkinter.Button(app, image=p3, width=64, height=77, bg="green", command=set_perso3()).place(x=368, y=50)


player.py

import pygame
from main import fenetre_tkinter

class Player(pygame.sprite.Sprite):


    def __init__(self, x, y):
        super().__init__()

        if perso == 1 : self.sprite_sheet = pygame.image.load("player1.png")
        if perso == 2: self.sprite_sheet = pygame.image.load("player2.png")
        if perso == 3: self.sprite_sheet = pygame.image.load("player3.png")


        self.image = self.get_image(0, 0)
        self.image.set_colorkey([0, 0, 0])
        self.rect = self.image.get_rect()
        self.position = [x, y]
A voir également:

3 réponses

vortex
 
Bonjour,

On imagine que cette variable perso tu en as besoin dans ta classe Player, en conséquence ton problème est simple, l'ajout d'un argument perso au “constructeur” de ta classe Player résoud simplement ce “problème”.
0
Peterduino Messages postés 7 Statut Membre
 
Ok merci beaucoup, donc j'ai fait :
from main import fenetre_tkinter


class Player(pygame.sprite.Sprite, perso):


mais il ne le reconnait pas meme avec le import et le fais que je rejoute perso en constructeur de ma methode "fenetre_tkinter" dans le main ...
Je suis débutant donc je n'ai peut etre pas compris ce que tu m'as dis :-(
0
vortex
 
Le constructeur (l'usuel tout du moins), c'est la méthode __init__

Ce que tu as fait est d'ajouter comme héritage à ta classe Player une classe perso, forcément ça balance une erreur.

Soit :

class Player(pygame.sprite.Sprite):
    def __init__(self, x, y, perso):
        super().__init__()
        self.sprite_sheet = pygame.image.load(f"player{perso}.png")
        self.image = self.get_image(0, 0)
        self.image.set_colorkey([0, 0, 0])
        self.rect = self.image.get_rect()
        self.position = [x, y]


Mais pourquoi as-tu un mélange tkinter et pygame ?
Tu devrais t'en tenir à une seule bibliothèque graphique, pygame étant le mieux puisque c'est un jeu si j'ai bien saisi.

De plus quelques trucs dans ta class Player me chiffonnent, mais comme je n'ai pas vu le reste de la classe, c'est peut-être cohérent.
0
Peterduino Messages postés 7 Statut Membre
 
C'est noté !
Si tu veut je te met tout mon code ?
Mais le melange pygame / tkinter, c'est que j'ai mon jeux en pygame, et une fenetre de launcher avec tkinter, pour decouvrir toutes les techniques python.

Et merci pour tout
0
vortex
 
Non, pas besoin de poster tout ton code ;-)
L'essentiel est que tu comprennes ce que tu fais, et que tu arrives à faire tourner tout ce beau petit monde.

> Et merci pour tout

Je t'en prie =)
0