2015-12-07 18 views
5

Io uso LinuxMint 17.3 Cinnamon in VirtualBox, la risoluzione 1920 * 1080 è utilizzata in questa macchina, l'opzione Hi-DPI è attivata. La macchina host è Windows 10, con risoluzione 3840 * 2160.
Nonostante l'attivazione dell'opzione Hi-DPI in LinuxMint, alcune applicazioni diventano buone per un lavoro confortevole, in termini di ridimensionamento, ma la GUI python-tk (python2) non è stata modificata - la dimensione del carattere è minuscola, la modifica delle opzioni Font in Cinnamon non cambia i caratteri in tk. C'è un modo per ridimensionare correttamente le applicazioni GUI tk già scritte?Scaling di Tkinter GUI in risoluzione 4k (3840 * 2160)?

risposta

7

tkinter ha un fattore di scala interno che utilizza per convertire misure come punti e pollici in pixel. È possibile impostare questo con il comando "ridimensionamento tk". Questo comando accetta un argomento, che è il numero di pixel in un "punto". Un punto è 1/72 di pollice, quindi un fattore di scala di 1,0 è appropriato per un display 72DPI.

root = Tk() 
root.tk.call('tk', 'scaling', 2.0) 

Secondo un commento in a similar question, ciò non pregiudica i font di default dal momento che sono definiti al di fuori del contesto di Tkinter. Se si specificano i propri font in punti, devono rispettare questa impostazione.

La documentazione ufficiale per il comando scaling è questo:

Imposta e interroga il fattore di scala corrente utilizzato dalla Tk per convertire tra le unità fisiche (ad esempio, punti, pollici o millimetri) e pixel . L'argomento numero è un numero in virgola mobile che specifica il numero di pixel per punto sul display della finestra. Se l'argomento della finestra è omesso, per impostazione predefinita viene visualizzata la finestra principale. Se l'argomento numero è omesso, il valore corrente del fattore di scala è restituito.

Un "punto" è un'unità di misura pari a 1/72 di pollice. Un fattore di scala di 1.0 corrisponde a 1 pixel per punto, che è equivalente a un monitor standard a 72 dpi. Un fattore di scala di 1,25 significherebbe 1,25 pixel per punto, che è l'impostazione per un monitor 90 dpi ; impostando il fattore di ridimensionamento su 1,25 su un monitor a 72 dpi, causerà la visualizzazione di tutte le informazioni nell'applicazione 1,25 volte come di dimensioni normali. Il valore iniziale per il fattore di scala viene impostato quando l'applicazione si avvia, in base alle proprietà del monitor installato, ma può essere modificata in qualsiasi momento. Le misurazioni effettuate dopo il fattore di ridimensionamento verranno utilizzate per il nuovo fattore di ridimensionamento, ma non è definito se i widget esistenti verranno ridimensionati dinamicamente a , in base al nuovo fattore di ridimensionamento.

+1

l'opzione di ridimensionamento influisce sulla dimensione dei pulsanti e, forse, su altri elementi, ma non sulle dimensioni dei testi in Etichette, Cornici e così via. Sembra che non ci siano alternative per modificarli per l'app già scritta . Per le nuove app, probabilmente, [caratteri personalizzati] (http://stackoverflow.com/a/4073037/4060355) può essere una soluzione. Ulteriori informazioni [qui] (http://stackoverflow.com/questions/7183094/setting-tk-scaling-in-python-tkinter-affects-widgets-but-not-text). – alr

Problemi correlati