我试图解决的问题是获得一对ch
,att
表示当前在某个给定位置显示的字符和关联属性
现在,当显示的字符不是宽字符(即ASCII字符)时,方法.inch
将正确屏蔽结果。当显示的字符较宽时会出现问题。更确切地说,我知道如何通过.instr
获取给定的字符,但是该函数不返回有关属性的任何信息
因为,据我所知,没有单独获取属性的特定函数,所以我的第一次尝试是使用.inch
,删除8个低有效位,并将结果解释为属性。这似乎在某种程度上起了作用,但我仔细检查后发现,以这种方式读取没有属性的希腊字母(u"u\03b1"
)会返回att = 11.0000.0000
,而不是0
。有没有更好的方法来解决这个问题
EDIT,Python3的一个最小示例
import curses
def bin(x):
out = ''
while x > 0:
out = str(x % 2) + out
x = x // 2
return out
def main(s):
s.addstr(1, 1, u'\u03b1')
s.refresh()
chratt = s.inch(1, 1)
att = chratt & 0xFF00
s.addstr(2, 1, bin(att))
s.refresh()
while True:
pass
curses.wrapper(main)
在诅咒中,inch和instr仅用于您怀疑的ascii字符。“复杂”或“宽”字符(如utf-8中的字符)有另一个系统,如ncurses创建者之一所解释的
然而,这是一个坏消息。它们还没有在python诅咒中实现。提交了一个pull请求here,它非常接近合并(90%),所以如果您真的需要它,为什么不自己去贡献呢
如果这不是一个选项,那么您可以尝试将您对屏幕所做的所有更改存储在一个变量中,然后从中提取宽字符
相关问题 更多 >
编程相关推荐