首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >是否可以在文本小部件中创建跨多行的Tkinter画布?

是否可以在文本小部件中创建跨多行的Tkinter画布?
EN

Stack Overflow用户
提问于 2019-11-25 04:45:48
回答 2查看 777关注 0票数 1

我想创建一个文本小部件,其中画布可以插入到文本。我几乎做到了完美,但是我需要画布占据两行空间。我希望第一行“Tom 24/11/2019”与画布顶部对齐,第二行“Hi Jim”与画布底部对齐。我想做的事有没有可能实现?

代码语言:javascript
复制
import tkinter as tk

sender='Tom'
dt='24/11/2019'
message='Hi Jim!'

root = tk.Tk()

text = tk.Text(root)
text.pack(padx = 10, pady = 10)

text.window_create(tk.END, window = tk.Canvas(root,bg='red',width=50,height=50)) # Example 2

text.tag_configure("sender", font="Arial 12 bold")
text.tag_configure("message", font="Arial 10",lmargin1=55,lmargin2=55)
text.tag_configure("date", font="Arial 8")

text.insert("end", sender.title()+' ',"sender")
text.insert("end", dt+'\n','date')
text.insert("end", message+'\n\n', 'message')


root.mainloop()
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-11-25 05:27:39

添加到Text中的小部件window_create()有点像单个字符,您不能在它旁边添加多行文本。

这里有一个变通方法(如果我理解你想要的)。它创建一个Frame来保存图像和Text小部件,并将它们一个接一个地打包。这使得文本独立于图像,您可以将字符串放入其中,它们将与左边缘对齐。

让第二个字符串在底部对齐可能是可能的,但我不知道有什么方法可以精确地做到这一点。在下面的代码中,我只是在两个字符串之间插入了一个空行,它恰好工作得很好(IMO)。

代码语言:javascript
复制
import tkinter as tk


sender = 'Tom'
dt = '24/11/2019'
message = 'Hi Jim!'

root = tk.Tk()

frame = tk.Frame(root, bg='white', bd=0, highlightthickness=0)
frame.pack()

canvas = tk.Canvas(frame, bg='red', width=50, height=50)
canvas.pack(side=tk.LEFT, anchor=tk.NW)
text = tk.Text(frame, bd=0)
text.pack(side=tk.LEFT, anchor=tk.NW)

text.tag_configure("sender", font="Arial 12 bold")
text.tag_configure("message", font="Arial 10") # , lmargin1=55, lmargin2=55)
text.tag_configure("date", font="Arial 8")

text.insert("end", sender.title()+' ', "sender")
text.insert("end", dt+'\n', 'date')
text.insert("end", '\n') # Add a blank line to move next one down.
text.insert("end", message+'\n\n', 'message')

root.mainloop()

屏幕截图

票数 1
EN

Stack Overflow用户

发布于 2019-11-25 05:18:53

不能,嵌入的小工具不能跨越文本小工具中的一行以上。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59022236

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档