gpt4 book ai didi

Python 诅咒,将终端窗口分成 4 个垫 - prefresh() 返回 ERR

转载 作者:行者123 更新时间:2023-12-05 06:01:00 29 4
gpt4 key购买 nike

我在 Python 中运行一个多处理系统,我打算使用 curses 将终端窗口划分为 4 个象限,并在其中一个象限中显示每个进程的输出。

所以,最终的输出应该是这样的:

--------------------------------
| | |
| PROCESS01 | PROCESS02 |
| | |
---------------------------------
| | |
| PROCESS03 | PROCESS04 |
| | |
---------------------------------

到目前为止,我尝试将窗口分成 4 个垫,如下所示:


def main():

screen = curses.initscr()
cols_tot = curses.COLS
rows_tot = curses.LINES
cols_mid = int(0.5*cols_tot) ## middle point of the window
rows_mid = int(0.5*rows_tot)

pad11 = curses.newpad(rows_mid, cols_mid)
pad12 = curses.newpad(rows_mid, cols_mid)
pad21 = curses.newpad(rows_mid, cols_mid)
pad22 = curses.newpad(rows_mid, cols_mid)
pad11.addstr(0, 0, "*** PROCESS 01 ***")
pad12.addstr(0, 0, "*** PROCESS 02 ***")
pad21.addstr(0, 0, "*** PROCESS 03 ***")
pad22.addstr(0, 0, "*** PROCESS 04 ***")
pad11.refresh(0,0, 0,0, rows_mid,cols_mid)
pad12.refresh(0,cols_mid, 0,cols_mid, rows_mid,cols_tot-1)
pad21.refresh(rows_mid,0, rows_mid,0, cols_tot-1,rows_mid)
pad22.refresh(rows_mid, cols_mid, rows_mid,cols_mid, rows_tot-1,cols_tot-1)


curses.napms(3000)
curses.endwin()


if __name__ == '__main__':
main()

但是我得到了错误:

File "screen_show.py", line 78, in <module> main()
File "screen_show.py", line 46, in main
pad12.refresh(0,cols_mid, 0,cols_mid, rows_mid,cols_tot-1)
_curses.error: prefresh() returned ERR

最佳答案

行应该改为

pad11.refresh(0,0, 0,0, rows_mid,cols_mid)
pad12.refresh(0,0, 0,cols_mid, rows_mid,cols_tot-1)
pad21.refresh(0,0, rows_mid,0, cols_tot-1,rows_mid)
pad22.refresh(0,0, rows_mid,cols_mid, rows_tot-1,cols_tot-1)

结果: final result

完整的工作代码

import curses


def draw_menu(stdscr):
k = 0
# Clear and refresh the screen for a blank canvas
stdscr.clear()
stdscr.refresh()
while (k != ord('q')):
# Initialization
height, width = stdscr.getmaxyx()

cols_tot = width
rows_tot = height
cols_mid = int(0.5*cols_tot) # middle point of the window
rows_mid = int(0.5*rows_tot)

pad11 = curses.newpad(rows_mid, cols_mid)
pad12 = curses.newpad(rows_mid, cols_mid)
pad21 = curses.newpad(rows_mid, cols_mid)
pad22 = curses.newpad(rows_mid, cols_mid)
pad11.addstr(0, 0, "*** PROCESS 01 ***")
pad12.addstr(0, 0, "*** PROCESS 02 ***")
pad21.addstr(0, 0, "*** PROCESS 03 ***")
pad22.addstr(0, 0, "*** PROCESS 04 ***")
pad11.refresh(0, 0, 0, 0, rows_mid, cols_mid)
pad12.refresh(0, 0, 0, cols_mid, rows_mid, cols_tot-1)
pad21.refresh(0, 0, rows_mid, 0, cols_tot-1, rows_mid)
pad22.refresh(0, 0, rows_mid, cols_mid, rows_tot-1, cols_tot-1)

k = stdscr.getch()


def main():
curses.wrapper(draw_menu)


if __name__ == "__main__":
main()

关于Python 诅咒,将终端窗口分成 4 个垫 - prefresh() 返回 ERR,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67386382/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com