Python tkinter

Fenetres et commandes

L’auteur de ce sujet a trouvé une solution à son problème.
Auteur du sujet

Bonjour, bonsoir ! Je travaille, pour un projet de BAC, sur le développement d’une appli qui permettrait, en fonction de certains critères, d’obtenir un programme.

Cependant j’arrive à créer ma 1ere fenêtre ainsi qu’à lancé des fenêtres pop-up via la commande TopLabel depuis le menu.

Mon problème c’est que je n’arrive pas à insérer des commandes dans ces fenêtres pop-up. Par exemple dans mon menu j’ai créé un bouton "Questionnaire" et je voudrais donc insérer la commande Radiobutton afin de réaliser ce questionnaire. Mais je n’y arrive que sur la fenêtre principale.

Pouvez-vous m’aider svp ?!

+0 -0

Humm, c’est curieux.

Je ne comprend pas bien ce dont tu parles. Je ne connais pas TopLabel. Un label (une étiquette en français), c’est le nom qu’on donne à une zone de texte non modifiable.

Ensuite, pour faire des pop-up on utilise TopLevel. Je pense que tu confonds a mélangé les deux. Peut-être qu’avec ton code ça serra plus claire.

Ce que tu appelles commandes, je pense que ce sont plutôt des widgets en langage technique non ?

Normalement, on ne devrait pas avoir trop de mal à t’aider, mais avec un code ça serait plus simple.

Tu peux utiliser les balises de code pour pouvoir poster ton code. ^^

Édité par ache

ache.one                 🦹         👾                                🦊

+1 -0
Auteur du sujet

Voici mon code. Oui je voudrais ajouter des widgets dans mes fenetres pop-up ;)

from tkinter import *

Creer une 1ere fenetre

window = Tk() top = Toplevel(window)

Personnaliser top

top.title("Inscription") top.geometry("1080x720") top.minsize(480, 360) top.configure(bg=’dark blue’)

Personnaliser window

window.title("Lose Weight") window.geometry("1080x720") window.minsize(480, 360) window.configure(background=’dark blue’)

TopLevel

def Ouvrir_inscription(master=None): top = Toplevel() top.title("S’inscrire") top.geometry(’1080x720’) top.configure(bg=’dark blue’) label = Label(top, text="S’inscrire", font=(’Verdana’, 40, 'bold italic underline’), fg=’black’, bg=’dark blue’) label.pack()

def Ouvrir_Questionnaire(): top2 = Toplevel() top2.title("Questionnaire") top2.geometry(’1080x720’) top2.configure(bg=’dark blue’) label2 = Label(top2, text="REPONDEZ AU QUESTIONNAIRE" ,font=(’Verdana’, 30, 'bold italic underline’), fg=’black’, bg=’dark blue’) label2.pack()

Creer un menu

mainmenu = Menu(window)

first_menu = Menu(mainmenu) first_menu.add_command(label="Inscription", command=Ouvrir_inscription) first_menu.add_command(label="Questionnaire", command=Ouvrir_Questionnaire) first_menu.add_command(label="Questionnaire3")

second_menu = Menu(mainmenu) second_menu.add_command(label="Reponse1") second_menu.add_command(label="Reponse2")

thirst_menu = Menu(mainmenu) thirst_menu.add_command(label="Quitter…", command=window.destroy)

mainmenu.add_cascade(label="Commencer", menu=first_menu) mainmenu.add_cascade(label="Finir", menu=second_menu) mainmenu.add_cascade(label="Parametres", menu=thirst_menu)

creer un widget

radio_widgetH = Radiobutton(top, text="Homme", value=1) radio_widgetF = Radiobutton(top, text="Femme", value=2) B1 = Button(mainmenu, text="Infos", relief=RAISED, bitmap="info") B1.pack()

Creer une frame

frame = Frame(window, bg=’dark blue’, bd=2, relief=RAISED, width=100, height=100) frame2 = Frame(top, bg=’powder blue’, bd=2, relief=RAISED) frame2.pack()

label_top = Label(top, text="Quel est votre sexe ?") label_top.pack()

Ajouter un 1er texte

label_title = Label(frame, text="Bienvenue sur Lose Weight !", font=("Helvetica", '40’, 'bold italic’), bg=’dark blue’, fg=’white’) label_title.pack()

Ajouter un second texte

label_subtitle = Label(frame, text="Avant de faire du sport… MANGEZ EQUILIBRÉ!", font=("Helvetica", '18’, 'bold’), bg=’dark blue’, fg=’white’) label_subtitle.pack()

Ajouter

radio_widgetH.pack() radio_widgetF.pack() frame.pack(expand=YES)

Creation barre menu

menu_bar = Menu(window)

Creer un 1er menu

file_menu = Menu(menu_bar, tearoff=0)

Afficher

window.config(menu=mainmenu) window.mainloop()

Édité par TinTiin

+0 -0
Auteur du sujet

Voici le code comme tu me l’avais demandé, je viens de trouver le bloc. J’ai rajouter quelques trucs depuis…

from tkinter import *
import webbrowser

def open_lw_channel():
    webbrowser.open_new("https://www.youtube.com/channel/UCuzik2022WtVo8s3H5LpK5A")

# Creer une 1ere fenetre
window = Tk()
top = Toplevel(window)

# Personnaliser top
top.title("Inscription")
top.geometry("1080x720")
top.minsize(480, 360)
top.configure(bg='dark blue')

def update_observer(*args):
   if var_gender.get():
      var_label_gender.set("Vous êtes un homme  !")
   else:
        var_label_gender.set("Vous êtes une femme  !")


# Personnaliser window
window.title("Lose Weight")
window.geometry("1080x720")
window.minsize(480, 360)
window.configure(background='dark blue')


# TopLevel
def Ouvrir_inscription(master=None):
    top = Toplevel()
    top.title("S'inscrire")
    top.geometry('1080x720')
    top.configure(bg='dark blue')
    label = Label(top, text="S'INSCRIRE", font=('Verdana', 30, 'bold italic underline'), fg='cyan', bg='dark blue')
    label.pack()

def Ouvrir_Questionnaire():
    top2 = Toplevel()
    top2.title("Questionnaire")
    top2.geometry('1080x720')
    top2.configure(bg='dark blue')
    label2 = Label(top2, text="REPONDEZ AU QUESTIONNAIRE" ,font=('Verdana', 30, 'bold italic underline'), fg='cyan', bg='dark blue')
    label2.pack()

def Ouvrir_Programme():
    top3 = Toplevel()
    top3.title("Mon Programme")
    top3.geometry('1080x720')
    top3.configure(bg='dark blue')
    label3 = Label(top3,text="MON PROGRAMME", font=('Verdana', 30, 'bold italic underline'), fg='cyan', bg='dark blue')
    label3.pack()

# BoutonYT
Yt_btn = Button(top, text="Ouvrir Youtube", font=('Verdana', 30, 'bold italic underline'), fg='dark blue', bg='cyan', command=open_lw_channel)



# Creer un menu
mainmenu = Menu(window)

first_menu = Menu(mainmenu)
first_menu.add_command(label="Inscription", command=Ouvrir_inscription)
first_menu.add_command(label="Questionnaire", command=Ouvrir_Questionnaire)
first_menu.add_command(label="Mon Programme", command=Ouvrir_Programme)

second_menu = Menu(mainmenu)
second_menu.add_command(label="Reponse1")
second_menu.add_command(label="Reponse2")

thirst_menu = Menu(mainmenu)
thirst_menu.add_command(label="Quitter...", command=window.destroy)

mainmenu.add_cascade(label="Commencer", menu=first_menu)
mainmenu.add_cascade(label="Finir", menu=second_menu)
mainmenu.add_cascade(label="Parametres", menu=thirst_menu)


# Widgets
var_gender = IntVar()
var_gender.trace("w", update_observer)
radio1 = Radiobutton(top, text="Homme", value=1, variable=var_gender, bg='dark blue', fg='powder blue', font=(20))
radio2 = Radiobutton(top, text="Femme", value=0, variable=var_gender ,bg='dark blue',fg='powder blue', font=(20))


var_label_gender = StringVar()
label_gender = Label(top, textvariable=var_label_gender, bg='dark blue', fg='powder blue', font=(25))



# Creer une frame
frame = Frame(window, bg='dark blue', bd=2, relief=RAISED, width=100, height=100)
frame2 = Frame(top, bg='powder blue', bd=2, relief=RAISED)
frame2.pack()


label_top = Label(top, text="Quel est votre sexe ?", bg='dark blue', fg='powder blue', font=('Courrier', 25))
label_top.pack()

# Ajouter un 1er texte
label_title = Label(frame, text="Bienvenue sur Lose Weight !", font=("Helvetica", '40', 'bold italic'), bg='dark blue', fg='white')
label_title.pack()

# Ajouter un second texte
label_subtitle = Label(frame, text="Avant de faire du sport... MANGEZ EQUILIBRÉ!", font=("Helvetica", '18', 'bold'), bg='dark blue', fg='white')
label_subtitle.pack()

# Ajouter
frame.pack(expand=YES)

# Affichage

radio1.pack()
radio2.pack()
label_gender.pack()
Yt_btn.pack(pady=100)

# Creation barre menu
menu_bar = Menu(window)

# Creer un 1er menu
file_menu = Menu(menu_bar, tearoff=0)

# Afficher
window.config(menu=mainmenu)
window.mainloop()




+0 -0

Ok, je comprend ton code.

Maintenant je ne comprend pas trop ton problème. Tu sais ajouter un widget à un TopLevel puisque tu le fais souvent.

Par exemple à questionnaire j’ai fais ceci :

def Ouvrir_Questionnaire():
    objectifs = -1
    top2 = Toplevel()
    top2.title("Questionnaire")
    top2.geometry('1080x720')
    top2.configure(bg='dark blue')
    label2 = Label(top2, text="REPONDEZ AU QUESTIONNAIRE" ,font=('Verdana', 30, 'bold italic underline'), fg='cyan', bg='dark blue')
    label2.pack()

    question = Label(top2, text="Quel est votre objectif ?" ,font=('Verdana', 20, 'bold italic underline'), fg='cyan', bg='dark blue')
    reponse1 = Radiobutton(top2, text="Perdre du poids", value=0, variable=objectifs, bg='dark blue',fg='pink', font=(16))
    reponse2= Radiobutton(top2, text="Prendre du muscle", value=1, variable=objectifs, bg='dark blue' fg='pink', font=(16))
    question.pack()
    reponse1.pack()
    reponse2.pack()

Ça a marché nickel. L’ordre des pack a une importance mais à part ça, ça roule.

Édité par ache

ache.one                 🦹         👾                                🦊

+0 -0
Vous devez être connecté pour pouvoir poster un message.
Connexion

Pas encore inscrit ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte