diff --git a/src/textual/app.py b/src/textual/app.py index 80d12510c..fe288a2a5 100644 --- a/src/textual/app.py +++ b/src/textual/app.py @@ -418,7 +418,10 @@ class App(Generic[ReturnType], DOMNode): @property def screen(self) -> Screen: - return self._screen_stack[-1] + try: + return self._screen_stack[-1] + except IndexError: + raise ScreenStackError("No screens on stack") from None @property def size(self) -> Size: diff --git a/tests/test_screens.py b/tests/test_screens.py index 959b27da3..7ab342ad4 100644 --- a/tests/test_screens.py +++ b/tests/test_screens.py @@ -10,6 +10,9 @@ async def test_screens(): app = App() app._set_active() + with pytest.raises(ScreenStackError): + app.screen + assert not app._installed_screens screen1 = Screen(name="screen1")