2017-09-25 4 views
1

Y at-il un moyen d'utiliser appJar lui-même pour obtenir la hauteur et la largeur de l'écran.Comment puis-je obtenir la largeur et la hauteur de l'écran en utilisant appJar?

Alternativley depuis appJar est une enveloppe pour tkinter est-il un moyen pour moi de créer un Tk() exemple d'utiliser le code ci-dessous j'ai vu utilisé partout tandis que la recherche:

import tkinter 

root = tkinter.Tk() 
width = root.winfo_screenwidth() 
height = root.winfo_screenheight() 

Je voudrais faire cela pour Je peux utiliser ces tailles pour régler les tailles de fenêtre plus tard avec la méthode .setGeometry(), par ex.

# Fullscreen 
app.setGeometry(width, height) 

ou:

# Horizontal halfscreen 
app.setGeometry(int(width/2), height) 

ou:

# Vertical halfscren 
app.setGeometry(width, int(height/2)) 

Répondre

1

Depuis appJar est juste une enveloppe sur tkinter, vous avez besoin d'une référence à root/master instance de Tk(), qui stockait comme self.topLevel dans gui. Alternativement, vous pouvez prendre une référence à un plus joli self.appWindow, qui est "enfant" toile de self.topLevel.

Pour rendre toutes les choses claires - il suffit d'ajouter quelques "raccourcis" aux méthodes souhaitées d'une classe héritée!

import appJar as aJ 

class App(aJ.gui): 
    def __init__(self, *args, **kwargs): 
     aJ.gui.__init__(self, *args, **kwargs) 

    def winfo_screenheight(self): 
     # shortcut to height 
     # alternatively return self.topLevel.winfo_screenheight() since topLevel is Tk (root) instance! 
     return self.appWindow.winfo_screenheight() 

    def winfo_screenwidth(self): 
     # shortcut to width 
     # alternatively return self.topLevel.winfo_screenwidth() since topLevel is Tk (root) instance! 
     return self.appWindow.winfo_screenwidth() 


app = App('winfo') 
height, width = app.winfo_screenheight(), app.winfo_screenwidth() 
app.setGeometry(int(width/2), int(height/2)) 
app.addLabel('winfo_height', 'height: %d' % height, 0, 0) 
app.addLabel('winfo_width', 'width: %d' % width, 1, 0) 
app.go() 
0

Heureusement, appJar ne vous permet de créer Tk() exemple. J'ai donc pu créer une instance en utilisant les fonctions pour récupérer les dimensions et détruire l'instance alors inutile.

# import appjar 
from appJar import appjar 

# Create an app instance to get the screen dimensions 
root = appjar.Tk() 

# Save the screen dimensions 
width = root.winfo_screenwidth() 
height = root.winfo_screenheight() 

# Destroy the app instance after retrieving the screen dimensions 
root.destroy()