Ouvrir un toplevel sur l'écran secondaire

Signaler
Messages postés
727
Date d'inscription
mercredi 17 novembre 2004
Statut
Membre
Dernière intervention
10 juin 2021
-
 Grimouare -
Bonjour,

Tous est dans le titre.
je suis sur python 3 tkinter sur distrib Linux unbuntu.
Et-i l possible d'ouvrir un toplevel sur l'écran secondaire uniquement ?

Merci d'avance pour vos avis et conseils .


Configuration: Linux / Firefox 89.0

5 réponses

Messages postés
727
Date d'inscription
mercredi 17 novembre 2004
Statut
Membre
Dernière intervention
10 juin 2021
13
Voici le code. Comment indiquer sur écran secondaire.
def fenetre_pleinne_ecran():
    top1 = Toplevel()
    top1.title("test")
    top1.attributes('-fullscreen', 1)
    Label(top1, text="Ceci est un test toplevel pleinne ecran sur écran secondaire").grid(row=0, column=0)
    top1.bind('<Escape>',lambda e: root.destroy())
    top1.mainloop()
Messages postés
1071
Date d'inscription
lundi 23 mars 2020
Statut
Membre
Dernière intervention
10 juin 2021
120
Bonjour,

def fenetre_plein_ecran():
    "Ceci est un test toplevel plein ecran sur écran secondaire"


As tu cherché sur Internet ?
Messages postés
727
Date d'inscription
mercredi 17 novembre 2004
Statut
Membre
Dernière intervention
10 juin 2021
13
Bonjour,

Oui et je n'est pas trouvé de solution pour un toplevel.
sinon je peux faire ceci directement :
def fenetre_pleinne_ecran():
    root = Tk()
    root.attributes('-fullscreen', True)
    Label(root, text="Ceci est un test toplevel pleinne ecran sur moniteur 2 ").grid(row=0, column=0)
    root.bind('<Escape>',lambda e: root.destroy()) 

Mais j'ai besoin impérativement quelle s'ouvre sur le moniteur secondaire ?

Merci.
Messages postés
1071
Date d'inscription
lundi 23 mars 2020
Statut
Membre
Dernière intervention
10 juin 2021
120
remplacer top1 par root ne change rien: ce n'est qu'un nom de variable
on pourrait la remplacer par toto, ca ferait pareil ...

et c'est plein écran pas pleinne écran ...
Messages postés
727
Date d'inscription
mercredi 17 novembre 2004
Statut
Membre
Dernière intervention
10 juin 2021
13
re,

J'ai trouvé pour le deuxieme moniteur
def fenetre_pleinne_ecran():
    root = Tk()
    root.geometry('%dx%d+%d+%d'%(1920,1080,3840,0))
    root.attributes('-fullscreen', True)
    Label(root, text="Ceci est un test plein écran sur moniteur 2 ").grid(row=0, column=0)
    root.bind('<Escape>',lambda e: root.destroy()) 


Mais ce qui je ne sais pas c'est comment récupérer les valeurs du moniteur 2 automatiquement, donc ici 1920,1080,3840,0
root.geometry('%dx%d+%d+%d'%(1920,1080,3840,0))


pour connaitre la position des moniteurs, j'ai utilisé :
laurent@Laurent-I7-9900K:~/Programmes/rfxcmd-master$ xrandr -q
Screen 0: minimum 8 x 8, current 5760 x 1080, maximum 32767 x 32767
DVI-D-0 connected primary 1920x1080+0+0 (normal left inverted right x axis y axis) 598mm x 336mm
   1920x1080     60.00*+  74.97    59.94    50.00  
   1680x1050     59.95  
   1600x1200     60.00  
   1440x900      74.98    59.89  
   1280x1024     75.02    60.02  
   1280x960      60.00  
   1280x720      60.00    59.94    50.00  
   1152x720      60.00  
   1024x768      75.03    60.00  
   800x600       75.00    60.32  
   720x576       50.00  
   720x480       59.94  
   640x480       75.00    59.94    59.93  
HDMI-0 disconnected (normal left inverted right x axis y axis)
DP-0 connected 1920x1080+1920+0 (normal left inverted right x axis y axis) 544mm x 303mm
   1920x1080     60.00*+  74.97    59.94    50.00  
   1680x1050     59.95  
   1600x1200     60.00  
   1440x900      74.98    59.89  
   1280x1024     75.02    60.02  
   1280x960      60.00  
   1280x720      60.00    59.94    50.00  
   1152x720      59.97  
   1024x768      75.03    60.00  
   800x600       75.00    60.32  
   720x576       50.00  
   720x480       59.94  
   640x480       75.00    59.94    59.93  
DP-1 disconnected (normal left inverted right x axis y axis)
DP-2 disconnected (normal left inverted right x axis y axis)
DP-3 disconnected (normal left inverted right x axis y axis)
DP-4 disconnected (normal left inverted right x axis y axis)
DP-5 connected 1920x1080+3840+0 (normal left inverted right x axis y axis) 544mm x 303mm
   1920x1080     60.00*+  59.94    50.00  
   1680x1050     59.95  
   1600x1200     60.00  
   1440x900      74.98    59.89  
   1280x1024     75.02    60.02  
   1280x960      60.00  
   1280x720      60.00    59.94    50.00  
   1152x720      60.00  
   1024x768      75.03    60.00  
   800x600       75.00    60.32  
   720x576       50.00  
   720x480       59.94  
   640x480       75.00    59.94    59.93  
laurent@Laurent-I7-9900K:~/Programmes/rfxcmd-master$ 



Merci.
Bonjour.

En regardant la doc, je n'ai pas vu de moyen de faire que la fenêtre root s'ouvre sur un écran et une toplevel sur un autre, faudrait regarder directement dans la doc tcl et tk pour s'en assurer.

Si tu n'as besoin de récupérer que la dimension 1920x1080+3840+0 via une commande système, alors subprocess + re

import subprocess
import re

out = subprocess.check_output(('xrandr', '-q')).decode()

res = re.search('DP-\d +connected (\d{4}x\d{4}\+\d{1,4}\+\d{1,4})', out)
print(res[1])


Que tu peux fournir directement à geometry sans passer par format.