Putting widgets into boxes (Npyscreen)

30 Views Asked by At

The problem with this code is that when navigating the interface, the boxes come to the foreground and cover the widgets. Is it possible to put widgets in boxes?

class MainForm(npyscreen.ActionFormV2):
    def create(self):
        # Виджет для ввода времени
        self.time_widget_box = self.add(npyscreen.BoxTitle, relx=0, rely=0, max_width=76, max_height=4)
        self.time_widget_box.name = "Время прогноза"
        text_widget_time = self.add(npyscreen.Textfield, value="Выберите час:", max_width=35, relx=2, rely=2, editable=False)
        self.time_widget_box.entry_widget = text_widget_time

        self.time_widget = self.add(npyscreen.Textfield, value="00", max_width=35, relx=38, rely=2, editable=True)
        self.selected_time_field = self.time_widget
        self.selected_time_field.add_handlers({curses.KEY_LEFT: self.move_hour_left, curses.KEY_RIGHT: self.move_hour_right})

        # Виджет "Запросы"
        self.remaining_requests_box = self.add(npyscreen.BoxTitle, relx=76, rely=0, max_width=41, max_height=4)
        self.remaining_requests_box.name = "Запросы"
        text_widget = self.add(npyscreen.Textfield, value="Количество оставшихся запросов: ", rely=2, relx=78, editable=False)
        self.remaining_requests_box.entry_widget = text_widget
        
        # Виджет для ввода дня
        self.day_widget = self.add(npyscreen.BoxBasic,rely=4,relx=0,max_width=35,max_height=8)
        self.day_widget = self.add(npyscreen.TitleSelectOne,max_height=2, max_width=30, value=[0], name="День:", values=["Сегодня", "Завтра"],rely=6,relx=2,scroll_exit=True)
        
        # Виджет для ввода города
        self.city_widget_box = self.add(npyscreen.BoxTitle, name="Город:", rely=4, relx=36, max_width=80, max_height=4)
        self.city_widget = self.add(npyscreen.Textfield, rely=6, relx=38, max_width=40, max_height=4)
        self.city_widget.add_handlers({curses.ascii.NL: self.on_enter_button_pressed_city_widget})
        self.city_widget_box.entry_widget = self.city_widget
        
        # Виджет для отображения данных о погоде
        self.weather_widget_box = self.add(npyscreen.BoxBasic, rely=8, relx=36, max_width=80, max_height=20)
        self.weather_widget = self.add(npyscreen.MultiLineEdit, value="", rely=9,relx=37,max_width=76,max_height=16)

        # Инициализация переменных для отображения статуса запроса, ошибки и данных о погоде
        self.request_count = 0
        self.status_widget_box = self.add(npyscreen.BoxBasic, name="Статус запроса:", rely=12,relx=0,max_width=35,max_height=8)
        self.status_widget = self.add(npyscreen.MultiLineEdit, value="", rely=13,relx=1,max_width=33,max_height=6)
        self.error_widget_box = self.add(npyscreen.BoxBasic, value="", name="Ошибка:", rely=20,relx=0,max_width=35,max_height=8)
        self.error_widget = self.add(npyscreen.MultiLineEdit, value="", rely=21, relx=1, max_width=33,max_height=6)

I tried to use "entry_widget", but this didn't solve the problem.

0

There are 0 best solutions below