2010-10-26 107 views
0

我有一段帮助信息,我想在窗口底部显示一个“ok”按钮。我的问题是格式化...我希望能够简单地将段落设置为一个变量,然后将该变量发送到消息框小部件。默认情况下,它以横向和非常难看的方式进行格式化。有什么建议?Python Tkinter帮助菜单

def aboutF(): 
    win = Toplevel() 
    win.title("About") 
    about = "Top/bottom 3 - Reports only the top/bottom 3 rows for a param you will  later specify.\ 
     Set noise threshold - Filters results with deltas below the specified noise threshold in ps.\ 
     Sort output - Sorts by test,pre,post,unit,delta,abs(delta).\ 
     Top 2 IDD2P/IDD6 registers - Reports only the top 2 IDD2P/IDD6 registers.\ 
     Only critical registers - Reports only critical registers.\ 
     Use tilda output format - Converts the output file from csv to tilda.\ 
     Use html output format - Converts the output file from csv to html." 
    Label(win, text=about, width=100, height=10).pack() 
    Button(win, text='OK', command=win.destroy).pack() 
+1

我们能看到你的代码?这可能与您为段落定义字符串的方式有关,而不是Tkinter本身。 – 2010-10-26 23:07:34

+0

我使用代码编辑了原始帖子。感谢您的建议。 – thenickname 2010-10-27 16:51:44

回答

1

使用自动换行的文本部件,并且或者更准确地定义你的字符串或做一些后处理以去除所有多余的空白。从this answer使用代码可以很容易地使用多种颜色,字体等

例如:

import Tkinter as tk 
import re 

class CustomText(tk.Text): 
    '''A text widget with a new method, HighlightPattern 

    example: 

    text = CustomText() 
    text.tag_configure("red",foreground="#ff0000") 
    text.HighlightPattern("this should be red", "red") 

    The HighlightPattern method is a simplified python 
    version of the tcl code at http://wiki.tcl.tk/3246 
    ''' 
    def __init__(self, *args, **kwargs): 
     tk.Text.__init__(self, *args, **kwargs) 

    def HighlightPattern(self, pattern, tag, start="1.0", end="end", regexp=True): 
     '''Apply the given tag to all text that matches the given pattern''' 

     start = self.index(start) 
     end = self.index(end) 
     self.mark_set("matchStart",start) 
     self.mark_set("matchEnd",end) 
     self.mark_set("searchLimit", end) 

     count = tk.IntVar() 
     while True: 
      index = self.search(pattern, "matchEnd","searchLimit",count=count, regexp=regexp) 
      if index == "": break 
      self.mark_set("matchStart", index) 
      self.mark_set("matchEnd", "%s+%sc" % (index,count.get())) 
      self.tag_add(tag, "matchStart","matchEnd") 

def aboutF(): 
    win = tk.Toplevel() 
    win.title("About") 
    about = '''Top/bottom 3 - Reports only the top/bottom 3 rows for a param you will later specify. 
     Set noise threshold - Filters results with deltas below the specified noise threshold in ps. 
     Sort output - Sorts by test,pre,post,unit,delta,abs(delta). 
     Top 2 IDD2P/IDD6 registers - Reports only the top 2 IDD2P/IDD6 registers. 
     Only critical registers - Reports only critical registers. 
     Use tilda output format - Converts the output file from csv to tilda. 
     Use html output format - Converts the output file from csv to html.''' 
    about = re.sub("\n\s*", "\n", about) # remove leading whitespace from each line 
    t=CustomText(win, wrap="word", width=100, height=10, borderwidth=0) 
    t.tag_configure("blue", foreground="blue") 
    t.pack(sid="top",fill="both",expand=True) 
    t.insert("1.0", about) 
    t.HighlightPattern("^.*? - ", "blue") 
    tk.Button(win, text='OK', command=win.destroy).pack() 

root=tk.Tk() 
aboutF() 
root.mainloop()