كيف يمكنني حذف نافذة لعنة في بيثون واستعادة نافذة الخلفية؟

StackOverflow https://stackoverflow.com/questions/2575409

  •  24-09-2019
  •  | 
  •  

سؤال

يا شباب Hell-O ، أنا أعمل على عتمة Python ولدي نافذتي الأولية مع Initscr () وأقوم بإنشاء العديد من النوافذ الجديدة للتداخل بها ، أريد أن أعرف ما إذا كان يمكنني حذف هذه النوافذ واستعادة الشاشة القياسية دون الحاجة إلى ذلك تعبئته. هل هناك طريقة؟ يمكنني أيضًا أن أسأل ما إذا كان بإمكان شخص ما أن يخبرني بالفرق بين النافذة والرواد الفرعي والوسادة والوسادة الفرعية.

لدي هذا الرمز:

stdscr = curses.initscr()
####Then I fill it with random letters
stdscr.refresh()
newwin=curses.newwin(10,20,5,5)
newwin.touchwin()
newwin.refresh()

####I want to delete newwin here so that if I write stdscr.refresh() newwin won't appear

stdscr.touchwin()
stdscr.refresh()

####And here it should appear as if no window was created.
هل كانت مفيدة؟

المحلول

هذا ، على سبيل المثال ، يجب أن يعمل:

import curses

def fillwin(w, c):
    y, x = w.getmaxyx()
    s = c * (x - 1)
    for l in range(y):
        w.addstr(l, 0, s)

def main(stdscr):
    fillwin(stdscr, 'S')
    stdscr.refresh()
    stdscr.getch()

    newwin=curses.newwin(10,20,5,5)
    fillwin(newwin, 'w')
    newwin.touchwin()
    newwin.refresh()
    newwin.getch()
    del newwin

    stdscr.touchwin()
    stdscr.refresh()
    stdscr.getch()

curses.wrapper(main)

هذا يملأ المحطة مع 's' ؛ في أي مفاتيح ، تملأ النافذة بـ "W" ؛ في ضغط المفتاح التالي ، يزيل النافذة ويظهر STDSCR مرة أخرى ، لذلك مرة أخرى كلها "؛ في ضغط المفتاح التالي ، ينتهي البرنامج النصي ويعود المحطة إلى طبيعته. أليس هذا يعمل من أجلك؟ أو هل تريد بالفعل شيء مختلف ...؟

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top