Basitce tum sayilari (koordinatlar ve boylar, font size dahil) bir olcek ile carpmaniz lazim.
Bu olcegi 1.0 yaptiginizda program eski haliyle calismali, 0.5 yaptiginizda yari boya inip 2.0 yaptiginizda iki katina cikmali. Tamsayi gereken yerde round
kullanilabilir.
Daha sonra bu olcekle oynayabilirsiniz. Mesela programin tasarlandigi cozunurluk 1920x1080 ise 640x480 bir ekranda min(640/1920, 480/1080) olcegi kullanilmali. Her sistemde widget’lar ayni olmadigi icin (yukaridaki orneklerde tasma var) belki kafadan 0.95 veya 0.9 baslamak lazim. Isletim sistemine gore de ayarlanabilir. Sistem bir kere oturtulduktan sonra deneme ve ayarlama imkani sunuyor.
Koddan rastgele ornek alirsak:
frame_sonucfwtotal.grid(row=28, column=1, padx=10, pady=10)
↓
frame_sonucfwtotal.grid(row=28, column=1, padx=10*gui_scale, pady=10*gui_scale)
label_sonuck3_value = tk.Label(frame_sonuck3 , text="0", bg="lightblue", highlightbackground="red", highlightthickness=1,font=("ariel", 12, "bold"))
↓
label_sonuck3_value = tk.Label(frame_sonuck3 , text="0", bg="lightblue", highlightbackground="red", highlightthickness=1,font=("ariel", round(12*gui_scale), "bold"))
root.geometry("1400x1000+300+300")
↓
root.geometry(f"{round(1400*gui_scale))x{round(1000*gui_scale)}+{round(300*gui_scale)}+{round(300*gui_scale)}")
(Bu pencere boyu oldugu icin sabit tutmak mantikli olabilir, ama ornek olsun diye bunu da cevirdim)
Koda bakiyorum da, grid hucreleri arasindaki padding ve font boyutu disinda hic boy/pozisyon bilgisi yok galiba? Ilk bakista pozisyon sandigim sayilarin cogu hesaplamalardaki sabitler cikti.
O halde diger yontemleri denemek daha mantikli olabilir.
Edit: Dogrudan “scaling” komutu varmis bu isi yapan.