我有一个程序,我希望像python shell一样,并在键入任何帮助时更改某些单词的颜色?
我正在开发一个简单的消息传递系统,需要将以下内容添加到Tkinter文本小部件:
我知道tkinter Text小部件能够通过标记机制使用多种字体和颜色,但我不明白如何使用这些功能.
如何使用Text小部件的功能实现这些功能?具体来说,我如何更改单词的字体系列,颜色和大小,以及如何使用它来实现拼写检查,其中拼写错误的单词加下划线或着色与文本的其余部分不同.
是否可以使用tk创建text editor可以支持的内容syntax highlighting,autocomplete甚至可以在以后扩展IDE为特定语言?
我找到了tkinterwidget,但不确定它是否可以支持?
我认为如果一个小部件可以在用户编写文本时对文本进行一些处理,那么它可以用于此目的.
我正在尝试在标签的帮助下以这种方式为 Tkinter 文本小部件中的文本着色:
text = self.text_field.get(1.0, 'end') #text_field is a text widget
s = re.findall("\d+", text)
for i in s:
self.text_field.tag_add(i, '1.0', 'end')
self.text_field.tag_configure(i, background='yellow',
font='helvetica 14 bold', relief='raised')
Run Code Online (Sandbox Code Playgroud)
这个想法是所有标签都是动态创建的,因为我从文本小部件获取数字并且它们可以具有任意长度。此代码为小部件中的所有文本着色,但我只需要对数字进行着色。
有什么建议么?
我在理解如何让标签在我的特定应用程序上工作时遇到了一些困难,我有一个名为“dwgoutputbox”的文本小部件,它在读取 CSV 文件后显示多个字段
在本例中,dwgoutputbox文本小部件显示许多字符串变量descDwg1,descDwg2,descDwg3,它们是第一列中的项目,后跟“问题”编号,它们是其他变量
我试图让第一列中的项目突出显示,以便最终我可以使它们可单击,因为它们将链接到文件。
由于第一列中的项目会发生变化,具体取决于 CSV 搜索(但仍保持以下通用格式),我不确定如何让 tag_config 工作
self.outputQty.insert(INSERT,descQty)
self.outputDesc.insert(INSERT,descPN, END," ", END, descInfo)
self.dwgoutputbox.insert(INSERT, descDwg1, END, " ", END, " Issue: ",END,descIss1,END, "\n")
self.dwgoutputbox.insert(INSERT, descDwg2, END, " ", END, " Issue: ",END,descIss2,END, "\n")
self.dwgoutputbox.insert(INSERT, descDwg3, END, " ", END, " Issue: ",END,descIss3,END, "\n")
format_link()
def format_link(dwgoutputbox,tag,apply_tag):
self.dwgoutputbox.tag_config(tagName="19",foreground="blue",underline=1)
dwgoutputbox.tag_bind(tag,"<Button-1>",apply_tag)
Run Code Online (Sandbox Code Playgroud)
好的,成功使其按预期工作,这主要归功于 Bryan Oakley 的帮助和耐心 - 谢谢您,非常感谢。
self.dwgoutputbox = Text(root, borderwidth=0, width=50, height=15, foreground="#ffffff",background="#3F3F3F", font="system_font 10")
self.dwgoutputbox.grid(row=3, column=2, columnspan=5, padx=2, pady=3)
self.dwgoutputbox.tag_config("dwg",foreground="lightblue")
self.dwgoutputbox.insert(1.0, descDwg3, "dwg", " …Run Code Online (Sandbox Code Playgroud) 在python 2.7中,每次Tkinter Text小部件中发生更改时,我都试图获取回调。
该程序根据此处找到的代码使用多个帧:在tkinter中的两个帧之间切换
回调部分摘自以下示例:http : //code.activestate.com/recipes/464635-call-a-callback-when-a-tkintertext-is-modified/
两种代码都可以单独很好地工作,但是将这两种代码结合起来对我来说很难。这是我尝试使用尽可能简单的代码。
import Tkinter as tk
class Texter(tk.Tk):
def __init__(self, *args, **kwargs):
tk.Tk.__init__(self, *args, **kwargs)
container = tk.Frame(self)
container.pack()
self.frames = {}
for F in (ConnectPage, EditorPage):
frame = F(container, self)
self.frames[F] = frame
frame.grid(row=0, column=0, sticky="nsew")
page_name = EditorPage.__name__
self.frames[page_name] = frame
self.show_frame(ConnectPage)
def show_frame(self, cont):
frame = self.frames[cont]
frame.tkraise()
def get_page(self, page_name):
return self.frames[page_name]
class ConnectPage(tk.Frame):
def __init__(self, parent, controller):
tk.Frame.__init__(self, parent)
button1 = tk.Button(self, text="SecondPage",
command=lambda: controller.show_frame(EditorPage))
button1.grid(row=2, column=3, …Run Code Online (Sandbox Code Playgroud) 在我的 tkinter 应用程序中,我希望用户能够单击按钮或菜单选项以获得更多信息。我希望能够打开另一个窗口,该窗口将显示 A4 页面的详细信息。
理想情况下,我希望它的格式很好,包括标题、副标题、项目符号列表、编号列表以及粗体和斜体等。
我天真地认为这只是一个生成 markdown 或 RTF 文档然后找到合适的 tk 小部件来显示它的情况。除非我遗漏了什么,否则似乎没那么容易。
从我到目前为止发现的(例如从这个线程中)我认为我的主要选择要么是费力地创建具有每种不同类型格式的 tk 标签;或者使用某种 python/HTML,例如tk-html-widgets。我不是 HTML 的忠实粉丝(或者至少不喜欢编写它),但如果这是唯一的方法......
在我去解决这些方法的痛苦之前,我想我会先问这里。这确实是获得格式良好的文本页面的唯一方法吗?有没有更好的办法?
期待一些建议!
谢谢...
tkinter ×7
python ×5
python-3.x ×3
text ×3
tags ×2
callback ×1
editor ×1
message ×1
tk-toolkit ×1
tkinter.text ×1
windows ×1