2015-10-05 132 views
0

如何在tkinter中創建應用程序,以適應適合較小PC尺寸的文本大小和尺寸?例如,在其他語言中,您可以指定文本大小和尺寸爲百分比。有沒有辦法在Python 3中做到這一點?我正在使用tkinter作爲我的GUI工具包Tkinter自適應文本和尺寸

+0

你問一個標籤,或整個GUI,如文字處理或表格要填寫? –

+0

我是指GUI窗口中的所有元素。文本大小,框架寬度,輸入框寬度,圖像大小,e.t.c。當我使用應用程序讓我們說一個迷你PC時,只有它的一部分適合這個小屏幕。我希望它能夠適應,並且無論屏幕大小如何都適合一切。 –

回答

0

一種解決方案是make a theme or styles,您應用了自己設置的縮放算法。這裏只是一個簡單的例子,只有一個按鈕。

import tkinter as tk 
from tkinter import ttk 

root = tk.Tk() 

# Base size 
normal_width = 1920 
normal_height = 1080 

# Get screen size 
screen_width = root.winfo_screenwidth() 
screen_height = root.winfo_screenheight() 

# Get percentage of screen size from Base size 
percentage_width = screen_width/(normal_width/100) 
percentage_height = screen_height/(normal_height/100) 

# Make a scaling factor, this is bases on average percentage from 
# width and height. 
scale_factor = ((percentage_width + percentage_height)/2)/100 

# Set the fontsize based on scale_factor, 
# if the fontsize is less than minimum_size 
# it is set to the minimum size 
fontsize = int(14 * scale_factor) 
minimum_size = 8 
if fontsize < minimum_size: 
    fontsize = minimum_size 

# Create a style and configure for ttk.Button widget 
default_style = ttk.Style() 
default_style.configure('New.TButton', font=("Helvetica", fontsize)) 

frame = ttk.Frame(root) 
button = ttk.Button(frame, text="Test", style='New.TButton') 

frame.grid(column=0, row=0) 
button.grid(column=0, row=0) 

root.mainloop() 

這將取決於你使用什麼類型的小部件,如何將其應用到你的GUI。例如tk.Button與ttk.Button不同。從我所瞭解的ttk小部件來說,當涉及本地外觀比tk小部件好,但我沒有自己測試過。

要將其應用於完整的GUI,您需要查看GUI中使用的不同小組件,並查看可以在哪裏進行縮放。你需要調整scale_factor來讓它看起來不錯。您可以通過將screen_width和screen_height設置爲您自己選擇的分辨率來測試不同的「屏幕尺寸」。

這裏是一個風格和主題tutorial from TkDocs