- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我已经实现了这个 Python chat application由 Saurabh Chaturvedi 撰写,开始了解网络的工作原理。该应用程序很简单,并且使用了 Tkinter 模块。
我想扩展应用程序的功能,使用户能够在消息框中键入表情符号,并在他们发送消息时将它们呈现为消息列表中的表情符号。例如,如果用户在消息框中键入“:)”,它应该呈现为😊。
到目前为止,我已经研究了如何在 Tkinter 应用程序中启用对表情符号的支持。我遇到了Displaying emojis/symbols in Python using tkinter lib ,但我不认为它直接解决了我的问题。我不确定我目前是否正在以正确的方式解决这个问题。
如果有任何帮助,我正在运行 Windows 10 并使用 Python 3。您应该能够通过运行 Saurabh’s article 中描述的两个脚本(服务器和客户端)来实现聊天应用程序。 . (另外,一个潜在的相关问题是表情符号在我的 Python 3 解释器中没有正确显示。例如,
>>> import emoji
>>> print(emoji.emojize(":thumbs_up:"))
最佳答案
您在这里有多个问题,我不确定您会遇到哪一个问题,因此我将尝试涵盖所有问题。
首先,你如何“emojify”一个字符串?
您需要准确定义这意味着什么——您将哪些输入集映射到哪些输出,如果 :8
是输入是否意味着80:80
应该转:8
在中间变成一个表情符号(如果不是,那么说明为什么不的规则到底是什么)等等。
那么实现起来并不难——无论你是在循环 s.split()
或更复杂的 re.finditer
,您的规则是否需要考虑当前模式之外的上下文等取决于您选择的规则。
无论如何,PyPI 上有许多库对此进行了各种变体,您至少已经找到了一个, emoji
.所以我假设这个问题已经解决了。
接下来,你在哪里把它挂到你的代码中?
大概,每当用户提交聊天消息时,您都会触发一个回调。我不知道你是如何设置的,但这并不重要,所以让我们举一个简单的例子:
def callback(widget):
msg = widget.get()
conn.sendall(msg)
msglog.append(f'>>> {msg}')
def callback(widget):
msg = widget.get()
msg = emojify(msg)
conn.sendall(msg)
msglog.append(f'>>> {msg}')
with_surrogates
您可以在您的表情符号字符串上调用该函数。
def callback(widget):
msg = widget.get()
msg = emojify(msg)
tkmsg = with_surrogates(msg)
conn.sendall(tkmsg)
msglog.append(f'>>> {tkmsg}')
def callback(widget):
msg = widget.get()
msg = emojify(msg)
conn.sendall(msg)
tkmsg = with_surrogates(msg)
msglog.append(f'>>> {tkmsg}')
def on_msg(msg):
tkmsg = with_surrogates(msg)
msglog.append(tkmsg)
关于python - 如何在 Tkinter 应用程序中启用对表情符号的支持?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52228940/
我是一名优秀的程序员,十分优秀!