IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Tkinter Python Discussion :

Tkinter en multi-screen


Sujet :

Tkinter Python

  1. #1
    Membre confirmé Avatar de sopsag
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    224
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 224
    Par défaut Tkinter en multi-screen
    Bonjour,

    j'ai l'infini bonheur de travailler avec 2 écrans mais je n'arrive pas à en profiter pleinement avec TkInter...

    Ma question :
    Comment récupérer des infos concernant des écrans multiples ?
    --> combien il y en a
    --> leur taille respective (en pixel)
    --> la taille totale (pour les voir tous réunis en un "super écran")

    Dans la pratique, voici ce que j'observe :
    j'ai 2 écrans de 1280x1024 chacun, soit un "super écran" de 2560x1024.
    winfo_screenwidth me renvoie 1280, mais quand je fixe la position d'une frame en x=1300, elle apparaît bien sur le 2° écran.

    Merci d'avance !

  2. #2
    Membre éclairé
    Avatar de airod
    Homme Profil pro
    Gérant Associé, DMP Santé et Directeur technique
    Inscrit en
    Août 2004
    Messages
    767
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Gérant Associé, DMP Santé et Directeur technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 767
    Par défaut
    bonjour, je pense qu'il faut plutôt regarder du coté du coté de la lib win32com, qui doit avoir ce qu'il faut pour interroger directement le système (si tu es sous windows)

  3. #3
    Membre confirmé Avatar de sopsag
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    224
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 224
    Par défaut
    Merci airod, mais ça me chagrine de penser que mon code ne fonctionnera que sous Windoz...
    Et si on a un mutli-écran sous Linux ou Mac, on est cuit ?

  4. #4
    Membre Expert
    Profil pro
    Développeur en systèmes embarqués retraité
    Inscrit en
    Mars 2006
    Messages
    952
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2006
    Messages : 952
    Par défaut
    Salut,

    Comme toi, je bosse avec deux écrans sous Tkinter, mais ça ne me pose pas de problème de n'avoir pas trouvé non plus ces infos. Même pas le fait de sauver les positions de différentes fenêtres pour quelqu'un qui n'aurait qu'un écran, puisqu'il peut toujours refaire un 'cascade' dans le popup de la barre des tâches, en tout cas sous Windows, je suppose que les autres OS ont une possibilité équivalente. A moins que tu n'aies un problème très précis?

    A+

    Pfeuh

  5. #5
    Membre éclairé
    Avatar de airod
    Homme Profil pro
    Gérant Associé, DMP Santé et Directeur technique
    Inscrit en
    Août 2004
    Messages
    767
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Gérant Associé, DMP Santé et Directeur technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 767
    Par défaut
    en fait je pense que windows est le plus rotor de système. Pour trouver les infos sous les autres système (Mac ou linux) il suffit de localiser les fichiers de descriptions (un recherche sur le web répondra a cette question)
    Puis dans le code il suffit de detecter le système pour exécuter tel ou tel traitement.
    Qu'en pensez vous?
    sinon il estpeut être temps de passer a WXPython pour les interfaces ,

  6. #6
    Membre confirmé Avatar de sopsag
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    224
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 224
    Par défaut
    Merci pfeuh, en fait, je cherche à faire une appli en plein écran.
    Elle doit donc se dimensionner toute seule en s'adaptant à la taille totale affichable.

    Mais winfo_screenwidth ne me renvoie que la largeur d'un seul écran.
    Bien sûr, je peux mettre un *2 en dur dans mon code, mais alors ça ne marchera plus un mono écran !

    Mais peut-être as-tu raison airod...
    il arrive un moment où on atteint les limites de Tkinter !

  7. #7
    Membre éclairé
    Avatar de airod
    Homme Profil pro
    Gérant Associé, DMP Santé et Directeur technique
    Inscrit en
    Août 2004
    Messages
    767
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Gérant Associé, DMP Santé et Directeur technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 767
    Par défaut
    je dirais même qu'on les atteint rapidement les limites de tkinter.
    La puissance de WXPython est indéniable. Un peu dur a prendre en main puisque tout est objet, mais ca vaut le coup. D'ailleurs je conseille l'achat du book (en anglais) mais truffé d'exemple qui permet de bien appréhender WX.
    (associé a Boa, on construit les interface trés rapidement)

    Cependant il faut vérifier si WX peut être utile pour résoudre ton problème.

    Sinon reste toujours la solution de faire le traitement à la mano.

  8. #8
    Membre confirmé Avatar de sopsag
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    224
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 224
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sinon reste toujours la solution de faire le traitement à la mano.
    Bé oui, mais même à la mano, comme faire ?
    Demander à l'utilisateur combien il a d'écran ?

  9. #9
    Membre Expert
    Profil pro
    Développeur en systèmes embarqués retraité
    Inscrit en
    Mars 2006
    Messages
    952
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2006
    Messages : 952
    Par défaut
    Citation Envoyé par sopsag Voir le message
    Elle doit donc se dimensionner toute seule en s'adaptant à la taille totale affichable.
    Ça ne me semble pas être une fonction 'standard'. Il me semble logique quand on clique sur 'plein écran' d'avoir un plein écran sur un seul écran, celui où se trouve la fenêtre. Ca ne me semble pas spécialement lié a Tkinter, je ne connais aucun soft qui réagit comme tu aurais envie, mais ça ne veut rien dire, c'est peut être faisable.

    Il faudrait non seulement connaitre le nombre d'écrans, mais en plus connaitre leur disposition (horizontal, vertical) et surtout supposer qu'ils aient tous la même résolution... J'utilise par exemple deux écrans, mais de résolutions différentes.

    J'ai plus ou moins résolu ce problème avec une petite astuce. Je dimensionne ma fenêtre à la main et je sauve dans un fichier ini la position et la taille de ma fenêtre à la fermeture du programme. je récupère ces infos au prochain démarrage pour ouvrir la fenêtre avec les anciennes position et taille. beaucoup d'applications font pareil.

    A+

    Pfeuh

    PS Je viens de retrouver un bout de code qui fait ce que je décris plus haut. on redimensionne la fenêtre comme on veut, on quitte l'appli et quand on la relance, on a les valeurs précédentes. Si quelqu'un peut m'expliquer les lignes que j'ai commenté, ça m'intéresse!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    import Tkinter
    import ConfigParser
    import sys
     
    def quitApp():
        ini.set('main_window', 'x', root.winfo_rootx() - 4)  # if somebody can explane these offsets...
        ini.set('main_window', 'y', root.winfo_rooty() - 23) # because I can't! :o)
        ini.set('main_window', 'width', root.winfo_width())
        ini.set('main_window', 'height', root.winfo_height())
        ini.write(open(ininame, 'w'))
        root.quit()
     
    ininame = '%s.ini'%sys.argv[0]
    ini = ConfigParser.ConfigParser()
    ini.read(ininame)
    if not len(ini.sections()):
        print "no inifile"
        ini.add_section('main_window')
        geostr = "640x480+0+0"
    else:
        print "inifile found"
        width = ini.getint('main_window', 'width')
        height = ini.getint('main_window', 'height')
        x = ini.getint('main_window', 'x')
        y = ini.getint('main_window', 'y')
        geostr = "%ix%i+%i+%i"%(width, height, x, y)
    root = Tkinter.Tk()
    print geostr
    root.geometry(geostr)
    root.protocol('WM_DELETE_WINDOW', quitApp)
    root.mainloop()

Discussions similaires

  1. application multi-screen resolution delphi 2010
    Par MonPc dans le forum Débuter
    Réponses: 0
    Dernier message: 10/01/2010, 08h46
  2. [Vim] Multi screen
    Par Spiff__ dans le forum Applications et environnements graphiques
    Réponses: 0
    Dernier message: 04/06/2009, 15h06
  3. Mise en place d'un affichage multi-screen en reseau
    Par Muganda dans le forum Langage
    Réponses: 12
    Dernier message: 09/06/2008, 09h20
  4. Form et multi screen
    Par Vlad_Oliv dans le forum Windows Forms
    Réponses: 4
    Dernier message: 28/04/2008, 11h58
  5. [Multi screen] Comment spécifier l'écran par défaut
    Par portu dans le forum API, COM et SDKs
    Réponses: 3
    Dernier message: 01/03/2006, 13h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo