Kyl*_*ble 1 python curses draw
我正在玩诅咒,我无法在屏幕上画一个盒子.我创建了一个有效的边框,但我想在边框中绘制一个框
这是我的代码
import curses
screen = curses.initscr()
try:
screen.border(0)
box1 = curses.newwin(20, 20, 5, 5)
box1.box()
screen.getch()
finally:
curses.endwin()
Run Code Online (Sandbox Code Playgroud)
任何建议?
Tho*_*key 11
建议的答案比必要的要复杂。如果您使用subwin,而不是使用newwin,它会与原始窗口共享内存,并且无需额外工作即可重新绘制。
这是修改后的原始程序(一行更改):
import curses
screen = curses.initscr()
try:
screen.border(0)
box1 = screen.subwin(20, 20, 5, 5)
box1.box()
screen.getch()
finally:
curses.endwin()
Run Code Online (Sandbox Code Playgroud)
来自curses文档:
当您调用方法来显示或删除文本时,效果不会立即显示在显示屏上....
因此,curses要求您使用window对象的refresh()方法明确告诉它重绘窗口 ....
你需要screen.refresh()
并且box1.refresh()
顺序正确.
工作实例
#!/usr/bin/env python
import curses
screen = curses.initscr()
try:
screen.border(0)
box1 = curses.newwin(20, 20, 5, 5)
box1.box()
screen.refresh()
box1.refresh()
screen.getch()
finally:
curses.endwin()
Run Code Online (Sandbox Code Playgroud)
要么
#!/usr/bin/env python
import curses
screen = curses.initscr()
try:
screen.border(0)
screen.refresh()
box1 = curses.newwin(20, 20, 5, 5)
box1.box()
box1.refresh()
screen.getch()
finally:
curses.endwin()
Run Code Online (Sandbox Code Playgroud)
您可以使用immedok(True)
自动刷新窗口
#!/usr/bin/env python
import curses
screen = curses.initscr()
screen.immedok(True)
try:
screen.border(0)
box1 = curses.newwin(20, 20, 5, 5)
box1.immedok(True)
box1.box()
box1.addstr("Hello World of Curses!")
screen.getch()
finally:
curses.endwin()
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
10942 次 |
最近记录: |