begin process at 2010 09 08 23:09:48
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Python

 > 

Divers

 > 

Aide et documentation

 > 

Tkinter


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Tkinter

samedi 1 mai 2010 à 12:16:44 | Tkinter

mauro50

Bonjour,je crée actuellement un mastermind en python dans le cadre d'un projet. Je voudrais savoir si il est possible de changer la couleur du fond d'écran de ma fenêtre tkinter, et si il est possible de créer des bouton rond
Je vous laisse mon code:


# -*- coding: cp1252 -*-

from Tkinter import *
import random

fen=Tk()
fen.geometry("590x430+500-300")
fram=Frame(fen,height=500,width=450)
fram.grid()

def mastermind():
global ligneCourante,billeCourante,combiOrdi
ligneCourante,billeCourante=0,0
combiOrdi=detOrdi(couleur)
numLigne[ligneCourante].configure(text=str(ligneCourante+1))
resultat[ligneCourante].configure(text="Cliquez sur une couleur pour commencer.",font=("Comic sans ms",11))


def testerChoix(essai):
global ligneCourante,billeCourante
boutonOk[ligneCourante].configure(state=DISABLED)
boutonEffacer[ligneCourante].configure(state=DISABLED)
if testCombi(combiOrdi,essai)==True:
resultat[ligneCourante].configure(text="Bravo !! Victoire en "+str(ligneCourante+1)+" coups !")
elif ligneCourante==11:
resultat[ligneCourante].configure(text="Perdu !")
for i in range(4):
ligneSolution.itemconfigure(billeSolution[i],fill=combiOrdi[i])
else:
approx=detApprox(combiOrdi,essai)
resultat[ligneCourante].configure(text=str(approx[0])+" bien placée(s), "+str(approx[1])+" mal placée(s)",font=("comic sans ms",10))
ligneCourante+=1
billeCourante=0
numLigne[ligneCourante].configure(text=ligneCourante+1)



def detOrdi(couleur):
combiAleatoire=[""]*4
for i in range(4):
combiAleatoire[i]=couleur[random.randint(0,7)]
return combiAleatoire

def testCombi(combiOrdi,listeRes):
return listeRes==combiOrdi

def detApprox(combiOrdi,listeRes):
lRes,cOrdi,bP,mP=[""]*4,[""]*4,0,0

for i in range(4):
lRes[i]=listeRes[i]
cOrdi[i]=combiOrdi[i]
for i in range(4):
if lRes[i]==cOrdi[i] and lRes[i]!="":
bP+=1
cOrdi[i]=""
lRes[i]=""
for i in range(4):
for x in range(4):
if lRes[i]!="" and lRes[i]==cOrdi[x]:
mP+=1
cOrdi[x]=""
lRes[i]=""
break
return [bP,mP]

def effacerLigne():
global billeCourante
boutonOk[ligneCourante].configure(state=DISABLED)
if billeCourante==1:
boutonEffacer[ligneCourante].configure(state=DISABLED)
billeCourante-=1
ligne[ligneCourante].itemconfigure(bille[ligneCourante][billeCourante],fill="grey")

def changeCouleur(i):
global billeCourante
if billeCourante<4:
ligne[ligneCourante].itemconfigure(bille[ligneCourante][billeCourante],fill=couleur[i])
essai[billeCourante]=couleur[i]
billeCourante+=1
boutonEffacer[ligneCourante].configure(state=ACTIVE)
if billeCourante==4:
boutonOk[ligneCourante].configure(state=ACTIVE)

def quitter():
fram.quit()
fram.destroy()


def rejouer():
boutonOk[ligneCourante].configure(state=DISABLED)
boutonEffacer[ligneCourante].configure(state=DISABLED)
for i in range(4):
ligneSolution.itemconfigure(billeSolution[i],fill="grey")
for i in range(12):
resultat[i].configure(text="")
numLigne[i].configure(text="")
for x in range(4):
ligne[i].itemconfigure(bille[i][x],fill="grey")
mastermind()

couleur=["black","red","blue","yellow","green","orange","pink","purple"]
ligneCourante,billeCourante=0,0
ligneCourante=Label(fram,font="bold",fg="gold",width=40)
essai=[""]*4



ligne=[""]*12
bille=[[""]*4]*12
boutonOk=[""]*12
boutonEffacer=[""]*12
Solution=[""]*12
numLigne=[""]*12
resultat=[""]*12
i,t=1,1
while i<=12:
numLigne[i-1]=Label(fram,text="",fg="red",width=2)
numLigne[i-1].grid(row=i,column=1)
ligne[i-1]=Canvas(fram,bg="white",height=20,width=76)
ligne[i-1].grid(row=i,column=2)
x0,y0,x1,y1=3,3,20,20
w=0
while t<=i*4:
bille[i-1][w]=ligne[i-1].create_oval(x0,y0,x1,y1,fill="grey")
x0+=19
x1+=19
t+=1
w+=1
boutonEffacer[i-1]=Button(fram,text="--",command=effacerLigne,state=DISABLED)
boutonEffacer[i-1].grid(row=i,column=3)
boutonOk[i-1]=Button(fram,text="Ok",command=lambda arg=essai: testerChoix(arg),state=DISABLED)
boutonOk[i-1].grid(row=i,column=4)
resultat[i-1]=Label(fram,font="bold",fg="brown",width=48)
resultat[i-1].grid(row=i,columnspan=8,column=5)
i+=1

ligneSolution=Canvas(fram,bg="DimGrey",height=20,width=76)
ligneSolution.grid(row=14,column=2)
billeSolution=[""]*4
x0,y0,x1,y1=3,3,20,20
for i in range(4):
billeSolution[i]=ligneSolution.create_oval(x0,y0,x1,y1,fill="grey19")
x0+=19
x1+=19

boutonCouleur=[""]*8
for i in range(8):
boutonCouleur[i]=Button(fram,bg=couleur[i],height=1,width=2,command=lambda arg=i: changeCouleur(arg))
boutonCouleur[i].grid(row=15,column=5+i)

boutonRond=Canvas



boutonQuitter=Button(fram,text="Quitter",command=quitter,)
boutonQuitter.grid(row=15,columnspan=2,column=1)
boutonRejouer=Button(fram,text="Rejouer",command=rejouer,)
boutonRejouer.grid(row=14,columnspan=2,column=3)
mastermind()



fen.mainloop()
fen.destroy()

Merci de votre compréhension et de votre aide
samedi 1 mai 2010 à 23:23:20 | Re : Tkinter

didoux95

Salut,

Oui, tu peux tout à fais changer la couleur du fond de ton application. Il te suffit d'utiliser l'attribut "bg" (aussi appelé "background"). Par exemple : (tk.)myFrame.configure(bg="red") ou encore tk.)myFrame.configure(bg="#FF0000")

En ce qui concerne des boutons rond.. Je ne pense pas que Tkinter en contienne par défaut.. En revanche tu peux les créer ! Un tk.Canvas de la taille de ton bouton, tu y dessines la forme que tu veux, et tu lui ajoutes un "bind("<Bouton-1>", myFunction)" pour qu'il se passe quelque chose quand on clique dessus (ce n'est qu'une solution parmis, surement beaucoup d'autre ..).

dimanche 2 mai 2010 à 14:03:44 | Re : Tkinter

mauro50

Merci pour ton aide, cependant sa m'a l'air assez compliqué pour les bouton vu que je dois crée 8 boutons,je sais pas si il existe un moyen assez simple pour gagner du temps, sinon je me contenteré de mes boutons carrés ^^
dimanche 2 mai 2010 à 14:31:45 | Re : Tkinter

didoux95

Salut,

L'explication est plus longue que le codage..
Par exemple :
Code Python :
import Tkinter as tk #ou "import tkinter as tk" selon ta version de python

myButton1 = tk.Canvas(root)
myButton1.create_oval(5, 5, 15, 15, fill='white')
myButton1.bind("<Button-1>", lambda event: myFunction(event))
myButton1.place(x=15, y=15, width=20, height=20)

myButton2 = tk.Canvas(root)
myButton2.create_oval(5, 5, 15, 15, fill='white')
myButton2.bind("<Button-1>", lambda event: myFunction(event))
myButton2.place(x=45, y=45, width=20, height=20)

def myFunction (event) :
    #Ca t'affiche le composants sur lequel l'utilisateur a cliqué ..
    #Après à toi de choisir ce qu'il faut faire suivant le bouton cliqué !
    print(event.widget)


Et c'est tout ! Enfin .. c'est tout pour 2 boutons (:
dimanche 2 mai 2010 à 14:42:19 | Re : Tkinter

mauro50

Merci beaucoup ! je crois que sa va bien m'aidé ça


Cette discussion est classée dans : text, configure, fram, lignecourante, billecourante


Répondre à ce message

Sujets en rapport avec ce message

Petit problème avec "return" [ par Uims ] Bonjour, Je suis entrain de faire un annuaire en python (avec Tk), mais j'ai un petit problème avec return dans la fonction "loc", j'aimerai que la v py2exe je ne vois pas comment ?? [ par xilure ] j'ai beau essaillé mais je n'arrive pas à  transformer mes sriptes en executable pour windows alors voila je vous presente un scripte et est ce que l' reseau local, serveur/client [ par xilure ] Bonjour,j'ai fait un petit scripte, que me permet soit d'etre un serveur ou un clien, et d'envoyer des message (chat en reseau) Mais voila, quand je s Débutant en python... problème avec les fonctions [ par pedro ] Bonjour,Je suis sur python depuis quelques heures... en plus les languages orientés objets sont un peu nouveau pour moi... J'essaie désesperement de f Problème avec draw.text du module PIL [ par MasterID ] Tkinter + Text + coloration [ par Kickaha59 ] Bonjour à tous,Je souhaite colorer certains mots afficher dans une fenêtre avec la fonction Text de Tkinter.Par exemple je veux colorer en vert tout l opération simple ...et pourtant compliquée...et pourtant simple...et p.... [ par dojh ] Bonjour à tousEn pleine initiation Python, mais aussi en prise de tête, mais c'est bien, ça fait travailler le cerveau...L'idée, c'est qu'avec l'impor PYTHON TKINTER utilisation de labels [ par bichon3001 ] Bonjour, Je souhaite utiliser l'interface graphique TKinter de Python pour appeler une fonction avec un bouton, et afficher le résultat dans un label. programme a améliorer [ par samuel310 ] Bonjour a tous,Je suis nouveau sur ce forum et débutant avec python.Je dois créer un petit jeu avec language python pour l'école, programme noté bien Python 2.6 avec Tkinter 8.6 [ par zarash ] Bonjour, Voici mon probleme : Je souhaite utiliser une option du widget text de Tkinter qui n'existe que dans la version 8.6.Il s'agit de la rotation


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Septembre 2010
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
27282930   

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,640 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales