2013-02-15 584 views
8

ピクセルを使用してTkinterテキストボックスのサイズを指定するにはどうすればよいですか?私はフォントのサイズを変更しようとしていません、私はこれを使用してウィンドウのサイズに合わせて拡大しています。Tkinterテキストボックスのサイズをピクセル単位で指定します。

+0

これを行う必要があるときはいつもあります。一意の制約がありますか、またはうまくレイアウトされたレイアウトを作成する方法を理解できませんか? –

+10

またはおそらく彼は単に質問に答えたいと思っています。 – rhody

答えて

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

これは 'キャンバス' - 'テキスト'ボックスですウィジェットは文字単位でサイズを受け入れます。 – mgilson

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()

を縮小しないf.pack_propagate(0)#

B =ボタン(F、テキスト= "!確かに")b.pack(= 1を展開し、BOTH =記入)

出典: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() 

これは、もちろん、あなたのTkinterのUIを設計するための場所の方法にあなたをロックしないが、それはあなたがピクセル単位で多くのウィジェットのサイズを指定することができません。後で子ウィジェットでpackメソッドを使用すると、プレースメントとサイジングが上書きされます。

あなたのコードは、オブジェクト指向の方法で表現する方がよいでしょうが、この例ではウィジェットのサイズを他の単位ではなくピクセル単位で達成するために必要な操作のシーケンスを示しています。

関連する問題