|
Publicité ' | ||||||||||||||||||||||||
|
|
#1 |
|
Membre Expert
![]() ![]() Inscription : décembre 2006 Messages : 2 197 ![]() |
Bonsoir,
non, non je ne me lance pas dans un concours d'haïku. ![]() Est-ce que quelqu'un a dans ses codes une coquille vide pour afficher une grille de type Sudoku ? Pour la résolution, pas de souci j'ai un code. Dans le cas contraire, j'essaierais de trouver un peu de temps pour le faire mais c'est un peu compliqué côté temps pour moi en ce moment. |
|
|
00
|
|
|
#2 |
|
Expert Confirmé
![]() ![]() Inscription : décembre 2007 Messages : 1 777 ![]() |
Bonjour rambc,
Sur le web, j'ai au moins trouvé ça: http://lionel.textmalaysia.com/sudok...l#.UK3Dm9fQvwM. Si ça ne te convient pas et si tu n'as pas d'autres réponses, je te proposerais un échange: je te fabrique ta coquille, et tu me passes tes codes de résolution. La coquille, en PyQt4, ne devrait pas être très compliquée en utilisant QTableWidget, et la structure de données sous forme de liste de listes du genre matrice devrait permettre la recherche récursive dans un arbre. Il y a une dizaine d'années, je m'étais amusé à coder les algorithmes de résolution en... Lisp (="Lots of Insipid and Stupid Parentheses"
__________________
Ne rien ranger permet d'observer la loi universelle d'entropie: l'inévitable convergence vers le chaos... Mes recettes python: http://www.jpvweb.com |
|
|
00
|
|
|
#3 |
|
Membre Expert
![]() ![]() Inscription : décembre 2006 Messages : 2 197 ![]() |
Merci pour le lien.
Côté résolution, rien de bien original. J'ai des idées pour la création de grilles. C'est dans le cadre d'une formation dans l'Éducation Nationale. Je mettrais le code final en ligne en Mars normalement (trop peu de temps libre cette année). Si d'ici là je ne t'ai pas contacté, relances-moi. J'aime beaucoup ! |
|
|
00
|
|
|
#4 |
|
Membre Expert
![]() ![]() Inscription : décembre 2006 Messages : 2 197 ![]() |
Comment pourrait-on faire pour obtenir les fonctionnalités suivantes visibles dans cette page et cette autre ?
PS : le lien donné ci-dessus semble mort... |
|
|
00
|
|
|
#5 | ||||||
|
Expert Confirmé
![]() ![]() Inscription : décembre 2007 Messages : 1 777 ![]() |
Bonjour rambc,
Je n'ai pas le temps pour l'instant de te terminer la coquille, je suis assez pris jusqu'à 1/2 mars. Cependant, je peux te confirmer que tout ce que tu souhaites est parfaitement réalisable. Voilà quelques éléments de principe: Grille utilisée: QTableWidget. Petit code de base pour créer la grille 9x9: Code :
Pour faire ça, je n'ai pas trouvé plus simple que de sous-classer QItemDelegate, et de surcharger sa méthode paint. Voilà comment on peut faire ça: Code :
Code :
![]() Les cases grises qui ont un chiffre au départ sont sélectionnables, mais en lecture seule. La case bleue est la case qui a le focus. J'ai mis à titre d'exemple des cases roses et vertes pour remplacer les dessins fournis (rond vert et croix rouge) parce que c'est plus simple à programmer. Si ça ne va pas, on peut trouver autre chose. Pour le reste: Il est possible de mettre dans une case en tout petit les chiffres permis, il suffit de placer à la volée un QTextEdit au lieu du QTableWidgetItem, et d'écrite en "richtext", c'est à dire en html (syntaxe réduite cependant). Ce ne sera peut-être pas facile à mettre au point, mais ça marchera. Et puisqu'il s'agit de html, on devrait pouvoir mettre une image en option. Voilà le départ! Pour le reste, il faudra attendre un peu... A+
__________________
Ne rien ranger permet d'observer la loi universelle d'entropie: l'inévitable convergence vers le chaos... Mes recettes python: http://www.jpvweb.com |
||||||
|
|
00
|
|
|
#6 |
|
Membre Expert
![]() ![]() Inscription : décembre 2006 Messages : 2 197 ![]() |
Merci,
cela fait un bon départ. Je vais étudier cela. Va juste falloir que je me remette à PyQt. Un grand merci. PS : je posterais ici mes avancés, s'il y en a... |
|
|
00
|
|
|
#7 | |||
|
Expert Confirmé Sénior
![]() Inscription : juin 2008 Messages : 3 719 ![]() |
Salut,
Citation:
J'étais parti sur une estimation d'une poignée d'heures en plusieurs itérations. C'était correct sur la partie réalisation du rendu proposé: ![]() Avec la mise en place d'une API semblable: Code :
Normal! Découvrir comment "adapter" les sorties avec l'interface et boucher des trous imprévus prend du temps. Au cas où le code est en PJ. - W PS: Le code est assez brouillon, il faut le faire évoluer en fonction des cas d'utilisation à y intégrer. Difficile de savoir "à priori" ce qui doit être factorisé ou pas, les différents objets, leurs relations ne sont pas encore "stables".
__________________
Architectures Post-Modernes |
|||
|
|
10
|
|
|
#8 |
|
Membre Expert
![]() ![]() Inscription : décembre 2006 Messages : 2 197 ![]() |
Je suis allergique à Tk.
Pas propre du tout à utiliser. Je n'aime pasdu tout la logique de Tk. Qt a une certaine cohérence de mon point de vue. De plus, j'ai envie de le faire comme un grand mais étant pressé je suis venu ici cherché de l'aide pour les points techniques, pour gagner du temps. J'ai regardé, le rendu est pas mal.
|
|
|
00
|
|
|
#9 | ||
|
Expert Confirmé Sénior
![]() Inscription : juin 2008 Messages : 3 719 ![]() |
Salut,
Citation:
J'aime bien Qt aussi mais c'est un peu compliqué à mettre en œuvre. On se retrouve à programmer en Python avec un background C++ pour comprendre les pièges et les astuces. Citation:
- W
__________________
Architectures Post-Modernes |
||
|
|
00
|
|
|
#10 |
|
Membre Expert
![]() ![]() Inscription : décembre 2006 Messages : 2 197 ![]() |
Côté solveur, je pense bientôt mettre mon code en ligne (au plus tard le 14 mars). Il faut que je finalise des trucs.
Bonne nouvelle : le code est assez structuré et scindé pour appréhender au mieux ce que j'ai fait, enfin je l'espère... |
|
|
00
|
|
|
#11 | ||
|
Membre Expert
![]() ![]() Inscription : décembre 2006 Messages : 2 197 ![]() |
Salut
Je suis en train de compléter un peu ton code. J'arrive à ce qui suit. J'utilise PySide car il s'installe très facilement sous Mac. Deux soucis.
Code :
|
||
|
|
00
|
|
|
#12 |
|
Expert Confirmé
![]() ![]() Inscription : décembre 2007 Messages : 1 777 ![]() |
Bonjour rambc,
Compte tenu du code que tu montres, tu voulais peut-être dire "Salut Tyrtamos"?
__________________
Ne rien ranger permet d'observer la loi universelle d'entropie: l'inévitable convergence vers le chaos... Mes recettes python: http://www.jpvweb.com |
|
|
00
|
|
|
#13 |
|
Membre Expert
![]() ![]() Inscription : décembre 2006 Messages : 2 197 ![]() |
Oh le boulet que je fais !!!
|
|
|
00
|
|
|
#14 |
|
Expert Confirmé
![]() ![]() Inscription : décembre 2007 Messages : 1 777 ![]() |
Mais non, ne t'inquiète pas, ça me fait plutôt rigoler.
Je regarde si je peux répondre à tes questions.
__________________
Ne rien ranger permet d'observer la loi universelle d'entropie: l'inévitable convergence vers le chaos... Mes recettes python: http://www.jpvweb.com |
|
|
00
|
|
|
#15 |
|
Membre Expert
![]() ![]() Inscription : décembre 2006 Messages : 2 197 ![]() |
Cela fait un baille que je n'utilise plus PySide et du coup je pense que j'ai râté un truc important.
Attention ! Sous PySide, je dois utiliser setBackground et non setBackgroundColor. |
|
|
00
|
|
|
#16 | ||
|
Membre Expert
![]() ![]() Inscription : décembre 2006 Messages : 2 197 ![]() |
La coquille se remplit. Le code ci-dessous gère en plus le déplacement et la saisie des valeurs là où c'est autorisé. Voici ce que j'aimerais ajouter dans un 1er temps.
Code :
|
||
|
|
00
|
|
|
#17 | ||
|
Expert Confirmé
![]() ![]() Inscription : décembre 2007 Messages : 1 777 ![]() |
Bonjour rambc,
J'ai quelques solutions à te proposer. Je n'ai pas repris la totalité de ton code, pour que les solutions que tu cherches ne soient pas noyées. Je crois avoir amélioré l'esthétique de la grille. Voilà ce que ça donne: ![]() Voilà le code qui fait ça (les commentaires sont à la suite): Code :
Pour mettre la grille au centre de la fenêtre, y compris avec le redimensionnement, il suffit: - de fixer les dimensions de la grille en mini et en maxi - et de la placer dans un QGridLayout Pour mettre de la couleur dans une case, on peut soit le faire à partir de delegate, soit à partir du QTableWidget. Mais à partir du QTableWidget, la couleur a tendance à "manger" un peu d'encadrement. Alors j'ai essayé de passer systématiquement par le delegate: cela explique la classe "CouleurCase" qui gère une liste de coordonnées comme [ligne, colonne, couleur]. Pour avoir sur demande une petite fenêtre avec les nombres permis dans la case en question, j'ai pensé à 2 solutions: - utiliser les bulles qui existent dans chaque case. Par exemple: Code :
self.table.item(1, 6).setToolTip(u"1 \n45 \n7 9") - utiliser la barre de status en bas de la fenêtre, mais cela demande à prendre la fenêtre QMainWindow au lieu de QWidget.
__________________
Ne rien ranger permet d'observer la loi universelle d'entropie: l'inévitable convergence vers le chaos... Mes recettes python: http://www.jpvweb.com |
||
|
|
00
|
|
|
#18 |
|
Membre Expert
![]() ![]() Inscription : décembre 2006 Messages : 2 197 ![]() |
Cela a l'air zoli !
Je teste cela avec PySide en fin de semaine car je croûle sous le boulot en retard. Serais-tu partant pour mettre le code sur pypi et github ? Je te mettrais en tant que concepteur associé de l'interface ou sous un autre titre. On pourrait aussi le mettre bien entendu sur ce site. |
|
|
00
|
|
|
#19 | |
|
Expert Confirmé
![]() ![]() Inscription : décembre 2007 Messages : 1 777 ![]() |
Citation:
Je peux te proposer, si ça te manque, une jolie fenêtre pour l'inévitable "à propos" et le copyright. Je peux aussi essayer d'en faire une version binaire avec cx_freeze, voire avec l'installeur "innosetup" pour Windows. Je peux aussi te proposer de le mettre dans la barre de notification (tray), pour que les gens qui font le sudoku au boulot puisse le faire discrètement
__________________
Ne rien ranger permet d'observer la loi universelle d'entropie: l'inévitable convergence vers le chaos... Mes recettes python: http://www.jpvweb.com |
|
|
|
00
|
|
|
#20 |
|
Membre Expert
![]() ![]() Inscription : décembre 2006 Messages : 2 197 ![]() |
Tout ce que tu me proposes est intéressant modulo innosetup car je suis librophile et windophobe...
Je regarde donc ta proposition ce weekend tranquillement. Merci pour ta collaboration, c'est génial ! |
|
|
00
|
Copyright © 2000-2013 - www.developpez.com