2013-02-15 260 views
8

如何指定使用像素的Tkinter文本框的尺寸?我不想改變字體大小,我使用它來幫助我將其縮放到窗口的大小。以像素爲單位指定Tkinter文本框的尺寸

+0

當你需要這樣做的時候,有很高的速度。你是否有某種獨特的約束,或者你只是不明白如何創建表現良好的佈局? – 2013-02-15 19:04:47

+10

或者他只是想讓問題得到解答。 – rhody 2015-05-19 23:27:22

回答

0

這是我經常這樣做的方法:

from tkinter import * 

class App: 
    def __init__(self): 
     self.tk = Tk() 
     self.canvas = Canvas(self.tk, width = 500, height = 500) 
     self.canvas.pack() 

這設定尺寸以在每個方向500個像素。當你創建這個類的一個實例時,它將顯示這個尺寸的窗口。 希望這有助於!

+3

這是一個'Canvas' - 'Text'框小部件以字符爲單位接受大小,我相信如果你想要像素,它就不那麼容易了...... – mgilson 2013-02-15 03:11:46

6

您可以通過將其放入框架中,通過取消激活尺寸傳播並將條目配置爲堅持框架邊框來強制框架達到固定尺寸。也應該以類似的方式與包裝一起工作。

import Tkinter # tkinter with small t for python 3 
#import ttk # nicer widgets 

root = Tkinter.Tk() 

mainFrame = Tkinter.Frame(root) 
mainFrame.grid() 
button = Tkinter.Button(mainFrame, text="dummy") 
button.grid() 


entryFrame = Tkinter.Frame(mainFrame, width=454, height=20) 
entryFrame.grid(row=0, column=1) 

# allow the column inside the entryFrame to grow  
entryFrame.columnconfigure(0, weight=10) 

# By default the frame will shrink to whatever is inside of it and 
# ignore width & height. We change that: 
entryFrame.grid_propagate(False) 
# as far as I know you can not set this for x/y separately so you 
# have to choose a proper height for the frame or do something more sophisticated 

# input entry 
inValue = Tkinter.StringVar() 
inValueEntry = Tkinter.Entry(entryFrame, textvariable=inValue) 
inValueEntry.grid(sticky="we") 


root.mainloop() 
0

這對我幫助很大:

您還可以使用高度和寬度選項明確設置 大小。如果您在按鈕中顯示文本,這些選項以文本單位定義按鈕的大小 。如果您顯示位圖或圖像,則它們會以像素(或其他屏幕單位)爲單位定義大小。你可以用 來指定文本按鈕的像素大小,但這需要 一些魔力。這裏是做的一種方式(有其他人):

F =幀(主,高度= 32,寬度= 32)f.pack_propagate(0)#不 收縮f.pack()

b =按鈕(F,文本= 「!當然」)b.pack(填寫= BOTH,擴大= 1)

來源:http://effbot.org/tkinterbook/button.htm

0

我有同樣的問題,似乎最簡單的答案是實例化一個指定大小的Frame對象,將其打包,然後使用place方法在其中放置和放置小部件。我發現在Frame對象上調用pack_propagate(0)方法是不必要的。

下面是一小段代碼,它在幾個小部件上舉例說明了這種方法。

在此腳本中實例化的最後一個小部件是一個文本框小部件,其大小以像素指定,與您的問題一樣。

from Tkinter import * 

root = Tk() 
root.title("Fee Fie Foe Fum") 
frame=Frame(root, width=300, height=160) 
frame.pack() 
button1 = Button(frame, text="Mercy!") 
button1.place(x=10, y=10, height=30, width=100) 
button2 = Button(frame, text="Justice!") 
button2.place(x=10, y=50, height=30, width=100) 
text1 = Label(text="Verdict:") 
text1.place(x=10, y=90) 
tbox1 = Text(frame) 
tbox1.place(x=10, y=115, height=30, width=200) 

root.mainloop() 

這不,當然,你鎖進了設計的UI Tkinter的地方的方法,但它允許您以像素指定許多部件的尺寸。隨後在子窗口小部件上使用pack方法將會覆蓋您的展示位置和大小。

如果以面向對象的方式表示它,那麼您的代碼可能會更好地組織起來,但此示例只是簡單地顯示了以像素而非其他單位完成窗口小部件大小所需的操作順序。

相關問題