Skip to content

Commit a0acfb7

Browse files
authored
Merge pull request #2607 from Starbuck5/document-window-publicly
Public docs for Window
2 parents 6dba1ad + b4a4675 commit a0acfb7

File tree

5 files changed

+458
-441
lines changed

5 files changed

+458
-441
lines changed

docs/reST/ref/sdl2_video.rst

Lines changed: 1 addition & 370 deletions
Original file line numberDiff line numberDiff line change
@@ -60,377 +60,8 @@
6060
.. class:: Window
6161

6262
| :sl:`pygame object that represents a window`
63-
| :sg:`Window(title='pygame window', size=(640, 480), position=None, fullscreen=False, fullscreen_desktop=False, **kwargs) -> Window`
64-
65-
Creates a window.
66-
67-
:param str title: The title of the window.
68-
:param (int, int) size: The size of the window, in screen coordinates.
69-
:param (int, int) or int position: A tuple specifying the window position, or
70-
``WINDOWPOS_CENTERED``, or ``WINDOWPOS_UNDEFINED``.
71-
:param bool fullscreen: Create a fullscreen window using the window size as
72-
the resolution (videomode change).
73-
:param bool fullscreen_desktop: Create a fullscreen window using the current
74-
desktop resolution.
75-
:param bool opengl: Create a window with support for an OpenGL context. You
76-
will still need to create an OpenGL context separately.
77-
:param bool vulkan: Create a window with support for a Vulkan instance.
78-
:param bool hidden: Create a hidden window.
79-
:param bool borderless: Create a window without borders.
80-
:param bool resizable: Create a resizable window.
81-
:param bool minimized: Create a mimized window.
82-
:param bool maximized: Create a maximized window.
83-
:param bool mouse_grabbed: Create a window with grabbed mouse input.
84-
:param bool keyboard_grabbed: Create a window with grabbed keyboard input.
85-
:param bool input_focus: Create a window with input focus.
86-
:param bool mouse_focus: Create a window with mouse focus.
87-
:param bool foreign: Marks a window not created by SDL.
88-
:param bool allow_highdpi: Create a window in high-DPI mode if supported.
89-
:param bool mouse_capture: Create a window that has the mouse captured
90-
(unrelated to INPUT_GRABBED).
91-
:param bool always_on_top: Create a window that is always on top
92-
(X11 only).
93-
:param bool skip_taskbar: Create a window that should not be added to the
94-
taskbar (X11 only).
95-
:param bool utility: Create a window that should be treated as a utility
96-
window (X11 only).
97-
:param bool tooltip: Create a window that should be treated as a tooltip
98-
(X11 only).
99-
:param bool popup_menu: Create a window that should be treated as a popup menu
100-
(X11 only).
101-
102-
103-
.. attribute:: grab_mouse
104-
105-
| :sl:`Get or set the window's mouse grab mode`
106-
| :sg:`grab_mouse -> bool`
107-
108-
When this attribute is set to ``True``, the window will try to confine the mouse
109-
cursor to itself.
110-
111-
Note this only set the "mode" of grab. The mouse may be confined to another window
112-
depending on the window focus. To get if the mouse is currently restricted to this
113-
window, please use :attr:`mouse_grabbed`.
114-
115-
.. seealso:: :attr:`mouse_grabbed`
116-
117-
.. versionadded:: 2.4.0
118-
119-
.. attribute:: grab_keyboard
120-
121-
| :sl:`Get or set the window's keyboard grab mode`
122-
| :sg:`grab_keyboard -> bool`
123-
124-
When this attribute is set to ``True``, the window will try to capture system
125-
keyboard shortcuts like ``Alt+Tab`` or the ``Meta/Super`` key.
126-
127-
This attribute only set the "mode" of grab. The keyboard may be captured by
128-
another window depending on the window focus. To get if keyboard is currently
129-
captured by this window, please use :attr:`keyboard_grabbed`.
130-
131-
Note that not all system keyboard shortcuts can be captured by applications
132-
(one example is ``Ctrl+Alt+Del`` on Windows).
133-
134-
When keyboard grab is enabled, pygame will continue to handle ``Alt+Tab`` when
135-
the window is full-screen to ensure the user is not trapped in your application.
136-
If you have a custom keyboard shortcut to exit fullscreen mode, you may suppress
137-
this behavior with an environment variable, e.g.
138-
``os.environ["SDL_ALLOW_ALT_TAB_WHILE_GRABBED"] = "0"``.
139-
140-
This attribute requires SDL 2.0.16+.
141-
142-
.. seealso:: :attr:`keyboard_grabbed`
143-
144-
.. versionadded:: 2.4.0
145-
146-
.. attribute:: mouse_grabbed
147-
148-
| :sl:`Get if the mouse cursor is confined to the window (**read-only**)`
149-
| :sg:`mouse_grabbed -> bool`
150-
151-
Get if the mouse cursor is currently grabbed and confined to the window.
152-
153-
Roughly equivalent to this expression:
154-
155-
::
156-
157-
win.grab_mouse and (win is get_grabbed_window())
158-
159-
.. seealso:: :attr:`grab_mouse`
160-
161-
.. versionadded:: 2.4.0
162-
163-
.. attribute:: keyboard_grabbed
164-
165-
| :sl:`Get if the keyboard shortcuts are captured by the window (**read-only**)`
166-
| :sg:`keyboard_grabbed -> bool`
167-
168-
Get if the keyboard shortcuts are currently grabbed and captured by the window.
169-
170-
Roughly equivalent to this expression:
171-
172-
::
173-
174-
win.grab_keyboard and (win is get_grabbed_window())
175-
176-
This attribute requires SDL 2.0.16+.
177-
178-
.. seealso:: :attr:`grab_keyboard`
179-
180-
.. versionadded:: 2.4.0
181-
182-
.. attribute:: title
183-
184-
| :sl:`Get or set the window title`
185-
| :sg:`title -> str`
186-
187-
Gets or sets the window title. An empty string means that no title is set.
188-
189-
.. attribute:: resizable
190-
191-
| :sl:`Get or set whether the window is resizable`
192-
| :sg:`resizable -> bool`
193-
194-
.. attribute:: borderless
195-
196-
| :sl:`Get or set whether the window is borderless`
197-
| :sg:`borderless -> bool`
198-
199-
Gets or sets whether the window is borderless.
200-
201-
.. note:: You can't change the border state of a fullscreen window.
202-
203-
.. attribute:: always_on_top
204-
205-
| :sl:`Get or set whether the window is always on top`
206-
| :sg:`always_on_top -> bool`
207-
208-
Get or set whether the window is always on top.
209-
210-
Setting the always-on-top mode requires SDL 2.0.16+.
211-
212-
.. versionadded:: 2.3.1
213-
214-
.. attribute:: id
215-
216-
| :sl:`Get the unique window ID (**read-only**)`
217-
| :sg:`id -> int`
218-
219-
.. attribute:: mouse_rect
220-
221-
| :sl:`Get or set the mouse confinement rectangle of the window`
222-
| :sg:`mouse_rect -> Rect|None`
223-
224-
Setting this attribute to a rect-like object confines the
225-
cursor to the specified area of this window.
226-
227-
This attribute can be None, meaning that there is no mouse rect.
228-
229-
Note that this does NOT grab the cursor, it only defines the area a
230-
cursor is restricted to when the window has mouse focus.
231-
232-
.. versionadded:: 2.4.0
233-
234-
.. attribute:: size
235-
236-
| :sl:`Get or set the window size in pixels`
237-
| :sg:`size -> (int, int)`
238-
239-
.. attribute:: minimum_size
240-
241-
| :sl:`Get or set the minimum size of the window's client area`
242-
| :sg:`minimum_size -> (int, int)`
243-
244-
Initial value in most cases is ``(0, 0)``. If :func:`from_display_module`
245-
was used to create the window and :func:`pygame.display.set_mode` was
246-
called with the ``SCALED`` flag, the initial value is the size used in
247-
that call.
248-
249-
Raises a ``ValueError`` if negative values are provided or
250-
if the width or height provided are greater than set
251-
maximum width or height respectively. Unless maximum size
252-
is ``(0, 0)`` (initial value).
253-
254-
.. seealso:: :attr:`maximum_size`.
255-
256-
.. versionadded:: 2.4.0
257-
258-
.. attribute:: maximum_size
259-
260-
| :sl:`Get or set the maximum size of the window's client area`
261-
| :sg:`maximum_size -> (int, int)`
262-
263-
Initial value is ``(0, 0)``.
264-
265-
Raises a ``ValueError`` if negative values are provided or
266-
if the width or height provided are less than set minimum
267-
width or height respectively.
268-
269-
.. seealso:: :attr:`minimum_size`.
270-
271-
.. versionadded:: 2.4.0
272-
273-
.. attribute:: position
274-
275-
| :sl:`Get or set the window position in screen coordinates`
276-
| :sg:`position -> (int, int) or WINDOWPOS_CENTERED or WINDOWPOS_UNDEFINED`
277-
278-
.. attribute:: opacity
279-
280-
| :sl:`Get or set the window opacity, between 0.0 (fully transparent) and 1.0 (fully opaque)`
281-
| :sg:`opacity -> float`
282-
283-
.. attribute:: display_index
284-
285-
| :sl:`Get the index of the display that owns the window (**read-only**)`
286-
| :sg:`get_display_index -> int`
287-
288-
.. classmethod:: from_display_module
289-
290-
| :sl:`Create a Window object using window data from display module`
291-
| :sg:`from_display_module() -> Window`
292-
293-
Create a Window object that uses the same window data from the :mod:`pygame.display` module, created upon calling
294-
:func:`pygame.display.set_mode`.
295-
296-
.. method:: get_surface
297-
298-
| :sl:`Get the window surface`
299-
| :sg:`get_surface() -> Surface`
300-
301-
Returns a "display surface" for this Window. The surface returned is
302-
analogous to the surface returned by :func:`pygame.display.set_mode`.
303-
304-
This method allows software rendering (classic pygame rendering) on top
305-
of the Window API. This method should not be called when using hardware
306-
rendering (coming soon).
307-
308-
Similarly to the "display surface" returned by :mod:`pygame.display`,
309-
this surface will change size with the Window, and will become invalid
310-
after the Window's destruction.
311-
312-
.. seealso:: :func:`flip`
313-
314-
.. versionadded:: 2.4.0
315-
316-
.. method:: flip
317-
318-
| :sl:`Update the display surface to the window.`
319-
| :sg:`flip() -> None`
320-
321-
Update content from the display surface to the window. This is the Window
322-
class equivalent of :func:`pygame.display.flip`.
323-
324-
This method allows software rendering (classic pygame rendering) on top
325-
of the Window API. This method should not be called when using hardware
326-
rendering (coming soon).
327-
328-
Here is a runnable example of using ``get_surface`` and ``flip``:
329-
330-
.. code-block:: python
331-
332-
import pygame
333-
from pygame._sdl2 import video
334-
335-
win = video.Window()
336-
surf = win.get_surface() # get the window surface
337-
338-
while True:
339-
for event in pygame.event.get():
340-
if event.type == pygame.QUIT:
341-
pygame.quit()
342-
raise SystemExit
343-
344-
# draw something on the surface
345-
surf.fill("red")
346-
347-
win.flip() # update the surface to the window
348-
349-
350-
.. versionadded:: 2.4.0
351-
352-
.. method:: set_windowed
353-
354-
| :sl:`Enable windowed mode (exit fullscreen)`
355-
| :sg:`set_windowed() -> None`
356-
357-
.. seealso:: :func:`set_fullscreen`
358-
359-
.. method:: set_fullscreen
360-
361-
| :sl:`Enter fullscreen`
362-
| :sg:`set_fullscreen(desktop=False) -> None`
363-
364-
:param bool desktop: If ``True``, use the current desktop resolution.
365-
If ``False``, change the fullscreen resolution to the window size.
366-
367-
.. seealso:: :meth:`set_windowed`.
368-
369-
.. method:: destroy
370-
371-
| :sl:`Destroy the window`
372-
| :sg:`destroy() -> None`
373-
374-
Destroys the internal window data of this Window object. This method is
375-
called automatically when this Window object is garbage collected, so
376-
there usually aren't any reasons to call it manually.
377-
378-
Other methods that try to manipulate that window data will raise an error.
379-
380-
.. method:: hide
381-
382-
| :sl:`Hide the window`
383-
| :sg:`hide() -> None`
384-
385-
.. method:: show
386-
387-
| :sl:`Show the window`
388-
| :sg:`show() -> None`
389-
390-
.. method:: focus
391-
392-
| :sl:`Set the window to be focused`
393-
| :sg:`focus(input_only=False) -> None`
394-
395-
Raises the window above other windows and sets the input focus.
396-
397-
:param bool input_only: if ``True``, the window will be given input focus
398-
but may be completely obscured by other windows.
399-
Only supported on X11.
400-
401-
.. method:: restore
402-
403-
| :sl:`Restore the size and position of a minimized or maximized window`
404-
| :sg:`restore() -> None`
405-
406-
.. method:: maximize
407-
408-
| :sl:`Maximize the window`
409-
| :sg:`maximize() -> None`
410-
411-
.. method:: minimize
412-
413-
| :sl:`Minimize the window`
414-
| :sg:`maximize() -> None`
415-
416-
.. method:: set_icon
417-
418-
| :sl:`Set the window icon`
419-
| :sg:`set_icon(surface, /) -> None`
420-
421-
Sets the window icon.
422-
423-
:param Surface surface: A Surface to use as the icon.
424-
425-
.. method:: set_modal_for
426-
427-
| :sl:`Set the window as a modal for a parent window`
428-
| :sg:`set_modal_for(parent, /) -> None`
429-
430-
:param Window parent: The parent window.
431-
432-
.. note:: This function is only supported on X11.
43363
64+
See :class:`pygame.Window`
43465

43566
.. class:: Texture
43667

0 commit comments

Comments
 (0)