2016-03-28 36 views
0

我是一個tkinter的初學者,並會感謝一些幫助下面的代碼。我不明白爲什麼左邊框中的文本被截斷 - 這似乎意味着框架比正在顯示的大。如何在顯示區域內進行換行?大小Tkinter文本小工具由像素 - 文本截斷

from Tkinter import * 
import tkFont 

class Display: 

    def __init__(self, master): 
     app = Frame(master) 
     app.grid() 

     self.l_frame = Frame(app,width=200, height=500) 
     self.r_frame = Frame(app,width=500, height=500) 
     self.r_frame.grid_propagate(False) 
     self.l_frame.grid_propagate(False) 
     self.l_frame.grid(row=0, column=0, sticky=W) 
     self.r_frame.grid(row=0, column=1, sticky=E) 

     self.mono_font = tkFont.Font(family="monospace",size=24,weight="bold") 
     self.instructions = "A longish string of text which I want to display using Tkinter but for some reason gets truncated" 

     self.info = Text(self.l_frame, wrap=WORD, padx=10, pady=10, bd=5) 
     self.info.insert(1.0,self.instructions) 
     self.info.grid() 

     self.island = Text(self.r_frame, bg="cyan", padx=20, pady=20, font=self.mono_font) 
     self.island.insert(1.0, "ready") 
     self.island.grid() 

root = Tk() 
game = Display(root) 
root.mainloop() 
+0

它是什麼,你真的想完成?關閉幾何傳播幾乎從來都不是正確的解決方案。左側區域恰好是200像素是否真的很重要?爲什麼不在多個字符中指定它? –

+0

這是一個基於文本的遊戲,我認爲不同大小的字體可能會讓人感到困惑。另外,作爲一種學習練習,我希望實現我所要做的事情,即使這不是最好的方法。 – Robin

+0

字體變化正是爲什麼你應該讓tkinter做所有的數學。如果用戶有更大的字體,您可能希望窗口自動增長。 –

回答

0

我不是太熟悉的Tkinter的.grid的方法,但我設法做我認爲你正在尋找使用標籤選項和一些.grid定位。

from Tkinter import * 
import tkFont 

class Display: 

    def __init__(self, master): 
     app = Frame(master) 
     app.grid() 

     self.l_frame = Frame(app,width=200, height=500) 
     self.r_frame = Frame(app,width=500, height=500) 
     self.r_frame.grid_propagate(False) 
     self.l_frame.grid_propagate(False) 
     self.l_frame.grid(row=0, column=0, sticky=W) 
     self.r_frame.grid(row=0, column=1, sticky=E) 

     self.mono_font = tkFont.Font(family="monospace",size=24,weight="bold") 
     self.instructions = Label(root, wraplength=195, text="A longish string of text which I want to display using Tkinter but for some reason gets truncated") # Made this a label with wraplength 

     self.info = Text(self.l_frame, wrap=WORD, padx=10, pady=10, bd=5) 
     #self.info.insert(1.0,self.instructions) #Commented this out, didn't seem to need it. 
     self.instructions.grid(row=0, sticky=NW) 

     self.island = Text(self.r_frame, bg="cyan", padx=20, pady=20, font=self.mono_font) 
     self.island.insert(1.0, "ready") 
     self.island.grid() 

root = Tk() 
game = Display(root) 
root.mainloop() 
+0

謝謝你。然而,作爲一個初學者,爲了讓自己不那麼害怕,我想知道我可以做一些看起來很簡單的事情,比如創建一個具有預定大小的2個水平文本框的框架。馴服野獸,因爲它是... – Robin

+0

從我已經讀過關於框架小部件的是,它們通常不用於文本,而只是幫助組織和安排其他小部件。「框架小部件用於分組其他小部件進入複雜的佈局。它們也用於填充,並在實現複合小部件時用作基類。「 - 來自http://effbot.org/tkinterbook/frame.htm –