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

Fermé
Peterduino - 31 juil. 2021 à 09:17
 vortex - 1 août 2021 à 22:33
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

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 5 Date d'inscription samedi 31 juillet 2021 Statut Membre Dernière intervention 11 juillet 2022
Modifié le 1 août 2021 à 20:23
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
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 5 Date d'inscription samedi 31 juillet 2021 Statut Membre Dernière intervention 11 juillet 2022
1 août 2021 à 21:44
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
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