2016-03-28 18 views
0

Ben tkinter ile yeni başlayan biriyim ve aşağıdaki kod ile bazı yardımlar için teşekkür ederim. Soldaki çerçevedeki metnin neden kesildiğini anlayamıyorum - çerçevenin görüntülendiğinden daha büyük olduğu anlaşılıyor. Görüntülenen alan içinde nasıl sarılır?Boyut Tkinter Metin Widget Piksel - Metin Kesilmiş

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

Gerçekten ne yapmaya çalışıyorsunuz? Dönme geometrisi yayılımı neredeyse hiçbir zaman doğru çözüm değildir. Sol alanın tam olarak 200 piksel olması gerçekten önemli mi? Neden bir dizi karakterde belirtmiyorsunuz? –

+0

Metin tabanlı bir oyun için ve farklı büyüklükteki yazı tipleriyle düşündüğüm şeyler kafa karıştırıcı olabilir. Ayrıca, bir öğrenme alıştırması olarak, en iyi yaklaşım olmasa bile, yapmaya çalıştığım şeyi başarmak isterim. – Robin

+0

yazı tipi değişiklikleri tam olarak neden tüm matematik yapmak t letter izin vermelisiniz. Kullanıcının daha büyük fontları varsa, muhtemelen pencerenin otomatik olarak büyümesini istersiniz. –

cevap

0

ben Tkinter içinde .grid yöntemle çok aşina değilim, ama ben Etiket seçeneğini ve bazı .grid konumlandırmayı kullanarak aradığınız ne düşündüğünü yapmayı başardı.

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

Bunun için teşekkürler. Ancak, yeni başlayan biri olarak, daha az korkutucu hissetmek için, önceden belirlenmiş boyutta 2 yatay metin kutusuyla bir çerçeve oluşturmak gibi basit bir şey yapabileceğimi bilmek isterim. Canavarı doldurmak, olduğu gibi ... – Robin

+0

Çerçeve widget'ları hakkında okuduğumdan, genellikle metin için kullanılmadıkları değil, sadece diğer widget'ları organize etmelerine ve düzenlemelerine yardımcı olmaları. ”Çerçeve widget'ları gruplamak için kullanılıyor diğer widget'lar karmaşık düzenlere. Aynı zamanda dolgu için ve bileşik aletler uygularken temel bir sınıf olarak kullanılırlar. "- http://effbot.org/tkinterbook/frame.htm –