Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Python 3.7 Filechooser crash #5873

Open
Dannylew12 opened this issue Jul 24, 2018 · 28 comments · May be fixed by #8509
Open

Python 3.7 Filechooser crash #5873

Dannylew12 opened this issue Jul 24, 2018 · 28 comments · May be fixed by #8509
Assignees
Labels
Component: Widgets kivy/uix, style.kv Platform: Windows Status: Needs-analysis Issue needs to be analyzed if it's real

Comments

@Dannylew12
Copy link

Dannylew12 commented Jul 24, 2018

Versions

  • Python3.7
  • OS:Windows 10
  • Kivy:1.10.1
  • Kivy installation method:PIP

Description

After the file selector popup happens the program crashes. The same code has no issue on python 3.6.

Code and Logs

[INFO   ] [Logger      ] Record log in C:\Users\DWL\.kivy\logs\kivy_18-07-24_16.txt
[INFO   ] [Kivy        ] v1.10.1
[INFO   ] [Python      ] v3.7.0 (v3.7.0:1bf9cc5093, Jun 27 2018, 04:06:47) [MSC v.1914 32 bit (Intel)]
[INFO   ] [Factory     ] 194 symbols loaded
[INFO   ] [Image       ] Providers: img_tex, img_dds, img_sdl2, img_gif (img_pil, img_ffpyplayer ignored)
[INFO   ] [Text        ] Provider: sdl2
[INFO   ] [Window      ] Provider: sdl2
[INFO   ] [GL          ] Using the "OpenGL" graphics system
[INFO   ] [GL          ] GLEW initialization succeeded
[INFO   ] [GL          ] Backend used <glew>
[INFO   ] [GL          ] OpenGL version <b'4.6.0 NVIDIA 388.43'>
[INFO   ] [GL          ] OpenGL vendor <b'NVIDIA Corporation'>
[INFO   ] [GL          ] OpenGL renderer <b'GeForce GTX 980 Ti/PCIe/SSE2'>
[INFO   ] [GL          ] OpenGL parsed version: 4, 6
[INFO   ] [GL          ] Shading version <b'4.60 NVIDIA'>
[INFO   ] [GL          ] Texture max size <16384>
[INFO   ] [GL          ] Texture max units <32>
[INFO   ] [Window      ] auto add sdl2 input provider
[INFO   ] [Window      ] virtual keyboard not allowed, single mode, not docked
[INFO   ] [VideoGstplayer] Using Gstreamer 1.14.1.0
[INFO   ] [Video       ] Provider: gstplayer
[INFO   ] [Base        ] Start application main loop
[INFO   ] [GL          ] NPOT texture support is available


The code used was lifted directly from your guide for filechooser.
If I change to python 3.6 the same code works.
@joyZombie
Copy link

Finally, after some Google-ing, I found someone with same issue. For me, same crash happening on Windows Server 2012 OS. And, yes, same code is working fine with Python 3.6

@Dannylew12
Copy link
Author

I am unclear. Is this issue being looked at or are we supposed to use 3.6?

@tshirtman
Copy link
Member

tshirtman commented Sep 26, 2018

Apparently nobody found the time/incentive to look into it yet, you can get a more detailed log by running

python main.py -c kivy:log_level:trace

and post it.

I just tested on python3.7 on linux, and i don't get the issue, so it's probably platform-specific.

@matham
Copy link
Member

matham commented Sep 27, 2018

Sorry, have been meaning to respond to this. The problem is very likely with win32file that is installed by pypiwin32. That is the only thing we import in filechooser selectively on windows that could be responsible https://github.com/kivy/kivy/blob/master/kivy/uix/filechooser.py#L120.

There are two distributions that provide the required modules I think, https://pypi.org/project/pywin32/ and https://pypi.org/project/pypiwin32/. Please take a look with pip freeze to see what you have installed. Try uninstalling and switching to the other to see if that fixes it and report back here with the results. You could also completely uninstalling both, but I'm not sure what else you have installed that may need it.

For reference, on py35 I have pypiwin32==219.

@Dannylew12
Copy link
Author

Dannylew12 commented Sep 27, 2018 via email

@Dannylew12
Copy link
Author

Dannylew12 commented Sep 27, 2018 via email

@matham
Copy link
Member

matham commented Sep 27, 2018

Did you forget to include a screenshot? You said Here is a screenshot of what I have, both and both up to date.

The log doesn't help because these crashes don't get logged and it's a very long log so I'm snipping it.

@Dannylew12
Copy link
Author

Dannylew12 commented Sep 27, 2018 via email

@matham
Copy link
Member

matham commented Sep 27, 2018

Check the issue #5873 - the image is not shown.

@Dannylew12
Copy link
Author

pip_freeze

@matham
Copy link
Member

matham commented Sep 27, 2018 via email

@bmmcwhirt
Copy link

I'm using the kivy demo to test this.

Uninstalling pypiwin32 does not fix the problem
Uninstalling just pywin32 gets you Errors about win32 module missing but the FileChooser loads directory but you are missing win32 functions.

pywin32 is a dependency of pypiwin32 so both are needed for full functionality.

Uninstalling both and not having either works, but you can no longer have win32 functions.

@matham
Copy link
Member

matham commented Sep 29, 2018

@bmmcwhirt Are you perchance using 32 bit python? I can't seem to reproduce the issue on 3.7 64 bit. Also, I tested with pypiwin32==223, pywin32==224. Which versions did you test with?

@tito tito added Component: Widgets kivy/uix, style.kv Status: Needs-analysis Issue needs to be analyzed if it's real Platform: Windows needs-feedback labels Oct 4, 2018
@tito tito added this to todo in Sprint pycon-fr 2018 via automation Oct 4, 2018
@tshirtman tshirtman removed this from todo in Sprint pycon-fr 2018 Oct 5, 2018
@matham matham added the awaiting-reply Waiting for reply from issue opener, will be closed if no reply label Oct 5, 2018
@no-response
Copy link

no-response bot commented Oct 19, 2018

This issue has been automatically closed because there has been no response to our request for more information from the original author. With only the information that is currently in the issue, we don't have the means to take action. Please reach out if you have or find the answers we need so that we can investigate further.

@no-response no-response bot closed this as completed Oct 19, 2018
@imalinowskip
Copy link

@matham Have been getting this issue since June! You're right I am using 32-bit python! I'll try using 64-bit python

@dehole
Copy link

dehole commented Jan 23, 2019

I also have this issue (Python 3.7.2, Kivy 1.11.0.dev):

Is the solution to downgrade to python 3.6?

Here are the versions I have installed:

certifi 2018.11.29
chardet 3.0.4
Cython 0.29.3
Django 2.1.5
docutils 0.14
ffpyplayer 4.1.0
idna 2.8
image 1.5.27
Kivy 1.11.0.dev0
Kivy-examples 1.11.0.dev0
Kivy-Garden 0.1.4
kivy.deps.glew 0.1.10
kivy.deps.gstreamer 0.1.13
kivy.deps.sdl2 0.1.18
numpy 1.16.0
pandas 0.23.4
Pillow 5.4.1
pip 19.0.1
Pygments 2.3.1
pypiwin32 223
pyserial 3.4
python-dateutil 2.7.5
pytz 2018.9
pywin32 224
requests 2.21.0
setuptools 40.6.3
six 1.12.0
urllib3 1.24.1
wheel 0.32.3

@Dannylew12
Copy link
Author

Dannylew12 commented Jan 23, 2019 via email

@no-response no-response bot removed the awaiting-reply Waiting for reply from issue opener, will be closed if no reply label Jan 23, 2019
@no-response no-response bot reopened this Jan 23, 2019
@dehole
Copy link

dehole commented Jan 23, 2019

That's strange since I am running 64 bit of python. I have tried running the kivy examples in python 3.7.0 as well, with the same issues.

I can upload whatever is needed to help troubleshoot this issue.

@Dannylew12
Copy link
Author

Dannylew12 commented Jan 23, 2019 via email

@Dannylew12
Copy link
Author

Dannylew12 commented Jan 25, 2019 via email

@dehole
Copy link

dehole commented Jan 27, 2019

I was able to reproduce it and it seems that it is related to pygame being the Provider for the crashing version.

When running RST_Editor from kivy-examples (and clicking Load):

[ERROR ] unable to access to <\pagefile.sys> Traceback (most recent call last): File "D:\Customers\Dustin\KivyPy3\.venv\lib\site-packages\kivy\uix\filechooser.py", line 178, in is_hidden return GetFileAttributesExW(fn)[0] & FILE_ATTRIBUTE_HIDDEN pywintypes.error: (32, 'GetFileAttributesEx', 'The process cannot access the file because it is being used by another process.')

For the crashing version (using pygame):

`Fatal Python error: (pygame parachute) Segmentation Fault

Current thread 0x00003e44 (most recent call first):
File "C:\Python37\lib\site-packages\kivy\uix\filechooser.py", line 178 in is_hidden
File "C:\Python37\lib\site-packages\kivy\uix\filechooser.py", line 860 in
File "C:\Python37\lib\site-packages\kivy\uix\filechooser.py", line 860 in _add_files
File "C:\Python37\lib\site-packages\kivy\uix\filechooser.py", line 828 in _generate_file_entries
File "C:\Python37\lib\site-packages\kivy\uix\filechooser.py", line 717 in _create_files_entries
File "C:\Python37\lib\site-packages\kivy\uix\filechooser.py", line 697 in _update_files
File "C:\Python37\lib\site-packages\kivy\clock.py", line 581 in tick
File "C:\Python37\lib\site-packages\kivy\base.py", line 337 in idle
File "C:\Python37\lib\site-packages\kivy\core\window\window_pygame.py", line 289 in _mainloop
File "C:\Python37\lib\site-packages\kivy\core\window\window_pygame.py", line 403 in mainloop
File "C:\Python37\lib\site-packages\kivy\base.py", line 502 in runTouchApp
File "C:\Python37\lib\site-packages\kivy\app.py", line 826 in run
File "main.py", line 64 in
`

The list of packages installed on the crashing version:
`Package Version


altgraph 0.16.1
asn1crypto 0.24.0
astroid 2.0.1
backcall 0.1.0
bcrypt 3.1.4
bleach 3.0.2
casttube 0.2.0
certifi 2018.4.16
cffi 1.11.5
chardet 3.0.4
colorama 0.3.9
crcmod 1.7
cryptography 2.3.1
cycler 0.10.0
Cython 0.28.5
ddbase 0.0.2
DDII 0.0.14
decorator 4.3.0
defusedxml 0.5.0
docutils 0.14
entrypoints 0.3
fabric 2.4.0
flake8 3.5.0
ftd2xx-py3k 1.0
future 0.16.0
idna 2.7
ifaddr 0.1.4
intelhex 2.2.1
invoke 1.2.0
ipaddress 1.0.22
ipykernel 5.1.0
ipython 7.0.1
ipython-genutils 0.2.0
ipywidgets 7.4.2
isort 4.3.4
jedi 0.13.1
Jinja2 2.10
json-rpc 1.11.0
jsonschema 2.6.0
jupyter 1.0.0
jupyter-client 5.2.3
jupyter-console 6.0.0
jupyter-core 4.4.0
Kivy 1.11.0.dev0
Kivy-examples 1.10.1
Kivy-Garden 0.1.4
kivy.deps.angle 0.1.7
kivy.deps.glew 0.1.10
kivy.deps.glew-dev 0.1.10
kivy.deps.gstreamer 0.1.13
kivy.deps.gstreamer-dev 0.1.13
kivy.deps.sdl2 0.1.18
kivy.deps.sdl2-dev 0.1.18
kiwisolver 1.0.1
lazy-object-proxy 1.3.1
macholib 1.11
MarkupSafe 1.1.0
matplotlib 3.0.0
mccabe 0.6.1
MinimalModbus 0.7
mistune 0.8.4
mooshimeter 0.1.0
nbconvert 5.4.0
nbformat 4.4.0
notebook 5.7.4
numpy 1.15.3
pandas 0.23.4
pandocfilters 1.4.2
paramiko 2.4.2
parso 0.3.1
pefile 2018.8.8
pickleshare 0.7.5
pip 19.0
pipenv 2018.11.26
prometheus-client 0.5.0
prompt-toolkit 2.0.6
protobuf 3.6.1
pyasn1 0.4.4
PyChromecast 2.3.0
pycodestyle 2.3.1
pycparser 2.19
pyflakes 1.6.0
pygame 1.9.4
Pygments 2.2.0
PyInstaller 3.4
pylint 2.0.1
PyMeasure 0.5.3
PyNaCl 1.3.0
pyparsing 2.2.2
pypiwin32 223
Pypubsub 4.0.0
pyqtgraph 0.10.0
pyserial 3.4
python-dateutil 2.7.3
pytz 2018.7
PyVISA 1.9.1
pywin32 223
pywin32-ctypes 0.2.0
pywinpty 0.5.5
pyzmq 17.1.2
qtconsole 4.4.3
requests 2.19.1
scipy 1.2.0
seaborn 0.9.0
Send2Trash 1.5.0
setuptools 40.6.3
simplegeneric 0.8.1
six 1.11.0
terminado 0.8.1
testpath 0.4.2
tornado 5.1.1
traitlets 4.3.2
urllib3 1.23
vboxapi 1.0
virtualenv 16.0.0
virtualenv-clone 0.5.1
virtualenvwrapper-win 1.2.5
wcwidth 0.1.7
webencodings 0.5.1
Werkzeug 0.14.1
wheel 0.32.3
widgetsnbextension 3.4.2
wrapt 1.10.11
wxPython 4.0.3
youtube-dl 2018.10.5
zeroconf 0.21.3`

@danach707
Copy link

I fixed it by adding hiddenimports=['win32timezone'] to my .spec file.
hope it helps!

@xiaxio
Copy link

xiaxio commented Sep 23, 2019

This question's answer seems to address the problem with .sys files in windows, by creating a filter:
https://stackoverflow.com/questions/42393319/kivy-filechooser-doubleclick.
Check the section:
# filter added. Since windows will throw error on sys files
self.fclv = MyFileChooser(filters= [lambda folder, filename: not filename.endswith('.sys')])

@ElliotGarbus
Copy link
Contributor

Running an edited version of example from the docs, see code below, the code does not crash and operates as expected.
Python 3.11.4
Kivy 2.2.1
Windows 11

There are a set of log messages related to accessing hidden system files, these are also listed below.
@Julian-O I recommend closing this issue.

ERROR  ] unable to access to <\DumpStack.log.tmp>
Traceback (most recent call last):
  File "C:\Users\ellio\PycharmProjects\KivyHelp222\venv\Lib\site-packages\kivy\uix\filechooser.py", line 180, in is_hidden
    return GetFileAttributesExW(fn)[0] & FILE_ATTRIBUTE_HIDDEN
           ^^^^^^^^^^^^^^^^^^^^^^^^
pywintypes.error: (32, 'GetFileAttributesEx', 'The process cannot access the file because it is being used by another process.')
[ERROR  ] unable to access to <\hiberfil.sys>
Traceback (most recent call last):
  File "C:\Users\ellio\PycharmProjects\KivyHelp222\venv\Lib\site-packages\kivy\uix\filechooser.py", line 180, in is_hidden
    return GetFileAttributesExW(fn)[0] & FILE_ATTRIBUTE_HIDDEN
           ^^^^^^^^^^^^^^^^^^^^^^^^
pywintypes.error: (32, 'GetFileAttributesEx', 'The process cannot access the file because it is being used by another process.')
[ERROR  ] unable to access to <\pagefile.sys>
Traceback (most recent call last):
  File "C:\Users\ellio\PycharmProjects\KivyHelp222\venv\Lib\site-packages\kivy\uix\filechooser.py", line 180, in is_hidden
    return GetFileAttributesExW(fn)[0] & FILE_ATTRIBUTE_HIDDEN
           ^^^^^^^^^^^^^^^^^^^^^^^^
pywintypes.error: (32, 'GetFileAttributesEx', 'The process cannot access the file because it is being used by another process.')
[ERROR  ] unable to access to <\swapfile.sys>
Traceback (most recent call last):
  File "C:\Users\ellio\PycharmProjects\KivyHelp222\venv\Lib\site-packages\kivy\uix\filechooser.py", line 180, in is_hidden
    return GetFileAttributesExW(fn)[0] & FILE_ATTRIBUTE_HIDDEN
           ^^^^^^^^^^^^^^^^^^^^^^^^
pywintypes.error: (32, 'GetFileAttributesEx', 'The process cannot access the file because it is being used by another process.')
[ERROR  ] [unable to access to <C]\DumpStack.log.tmp>
Traceback (most recent call last):
  File "C:\Users\ellio\PycharmProjects\KivyHelp222\venv\Lib\site-packages\kivy\uix\filechooser.py", line 180, in is_hidden
    return GetFileAttributesExW(fn)[0] & FILE_ATTRIBUTE_HIDDEN
           ^^^^^^^^^^^^^^^^^^^^^^^^
pywintypes.error: (32, 'GetFileAttributesEx', 'The process cannot access the file because it is being used by another process.')
[ERROR  ] [unable to access to <C]\hiberfil.sys>
Traceback (most recent call last):
  File "C:\Users\ellio\PycharmProjects\KivyHelp222\venv\Lib\site-packages\kivy\uix\filechooser.py", line 180, in is_hidden
    return GetFileAttributesExW(fn)[0] & FILE_ATTRIBUTE_HIDDEN
           ^^^^^^^^^^^^^^^^^^^^^^^^
pywintypes.error: (32, 'GetFileAttributesEx', 'The process cannot access the file because it is being used by another process.')
[ERROR  ] [unable to access to <C]\pagefile.sys>
Traceback (most recent call last):
  File "C:\Users\ellio\PycharmProjects\KivyHelp222\venv\Lib\site-packages\kivy\uix\filechooser.py", line 180, in is_hidden
    return GetFileAttributesExW(fn)[0] & FILE_ATTRIBUTE_HIDDEN
           ^^^^^^^^^^^^^^^^^^^^^^^^
pywintypes.error: (32, 'GetFileAttributesEx', 'The process cannot access the file because it is being used by another process.')
[ERROR  ] [unable to access to <C]\swapfile.sys>
Traceback (most recent call last):
  File "C:\Users\ellio\PycharmProjects\KivyHelp222\venv\Lib\site-packages\kivy\uix\filechooser.py", line 180, in is_hidden
    return GetFileAttributesExW(fn)[0] & FILE_ATTRIBUTE_HIDDEN
           ^^^^^^^^^^^^^^^^^^^^^^^^
pywintypes.error: (32, 'GetFileAttributesEx', 'The process cannot access the file because it is being used by another process.')
from kivy.app import App
from kivy.lang import Builder
from kivy.uix.floatlayout import FloatLayout
from kivy.properties import ObjectProperty
from kivy.uix.popup import Popup

import os

kv = """
Root:
    text_input: text_input

    BoxLayout:
        orientation: 'vertical'
        BoxLayout:
            size_hint_y: None
            height: 30
            Button:
                text: 'Load'
                on_release: root.show_load()
            Button:
                text: 'Save'
                on_release: root.show_save()

        BoxLayout:
            TextInput:
                id: text_input
                text: ''

            RstDocument:
                text: text_input.text
                show_errors: True

<LoadDialog>:
    BoxLayout:
        size: root.size
        pos: root.pos
        orientation: "vertical"
        FileChooserListView:
            id: filechooser

        BoxLayout:
            size_hint_y: None
            height: 30
            Button:
                text: "Cancel"
                on_release: root.cancel()

            Button:
                text: "Load"
                on_release: root.load(filechooser.path, filechooser.selection)

<SaveDialog>:
    text_input: text_input
    BoxLayout:
        size: root.size
        pos: root.pos
        orientation: "vertical"
        FileChooserListView:
            id: filechooser
            on_selection: text_input.text = self.selection and self.selection[0] or ''

        TextInput:
            id: text_input
            size_hint_y: None
            height: 30
            multiline: False

        BoxLayout:
            size_hint_y: None
            height: 30
            Button:
                text: "Cancel"
                on_release: root.cancel()

            Button:
                text: "Save"
                on_release: root.save(filechooser.path, text_input.text)
"""


class LoadDialog(FloatLayout):
    load = ObjectProperty(None)
    cancel = ObjectProperty(None)


class SaveDialog(FloatLayout):
    save = ObjectProperty(None)
    text_input = ObjectProperty(None)
    cancel = ObjectProperty(None)


class Root(FloatLayout):
    loadfile = ObjectProperty(None)
    savefile = ObjectProperty(None)
    text_input = ObjectProperty(None)

    def dismiss_popup(self):
        self._popup.dismiss()

    def show_load(self):
        content = LoadDialog(load=self.load, cancel=self.dismiss_popup)
        self._popup = Popup(title="Load file", content=content,
                            size_hint=(0.9, 0.9))
        self._popup.open()

    def show_save(self):
        content = SaveDialog(save=self.save, cancel=self.dismiss_popup)
        self._popup = Popup(title="Save file", content=content,
                            size_hint=(0.9, 0.9))
        self._popup.open()

    def load(self, path, filename):
        with open(os.path.join(path, filename[0])) as stream:
            self.text_input.text = stream.read()

        self.dismiss_popup()

    def save(self, path, filename):
        with open(os.path.join(path, filename), 'w') as stream:
            stream.write(self.text_input.text)

        self.dismiss_popup()


class EditorApp(App):
    def build(self):
        return Builder.load_string(kv)


if __name__ == '__main__':
    EditorApp().run()

@Julian-O
Copy link
Contributor

@ElliotGarbus: I would like to close this, but I am unsure.

  • We are still getting error log messages on what should be a mundane task.
  • The reports were very config-dependent, so showing it works on one config isn't sufficient to saw it is closed.
  • Some of the proposed causes seem unlikely given the evidence. Some of the proposed work-arounds seem very fragile (timezones? .sys files only?)

@dehole @imalinkowskip @joyZombie @Dannylew12 Are any of you still encountering this with Kivy 2.2.1, and recent versions of the dependencies?

@Julian-O Julian-O added the awaiting-reply Waiting for reply from issue opener, will be closed if no reply label Nov 30, 2023
@ElliotGarbus
Copy link
Contributor

ElliotGarbus commented Nov 30, 2023

@Julian-O The error messages in the log will only occur if the path in the FileChooser is set to the root (C:) directory in Windows. Set it to any other directory these messages will not be seen. I view this as a non-issue.
The workarounds are not required - the system is not crashing.

I'm fine waiting to see if others are still experiencing an issue.

Edit: It might be reasonable to consider if the log messages should be changed to warning (or even info) from error.

@Julian-O
Copy link
Contributor

@ElliotGarbus: I am taking a different position:

FileChooser needs to work out whether a file is hidden. On Windows it calls win32file.GetFileAttributesExW() which appears to stumble on files that are in use. The stumble is now logged, rather than crashing, which is a step forward.

Python 3.3 introduced os.stat(), which allows access to the hidden flag on Windows. We don't need to support earlier versions of Python. So my proposal:

  • FileChooser's is_hidden should be refactored to use:

    • os.stat() and stat.FILE_ATTRIBUTE_HIDDEN for Windows
    • os.stat() and stat.UF_HIDDEN for macOS
    • file starts with a dot for Linux, other platforms (and also for macOS too?)
  • FileChooser's platform-dependent imports can then be cleaned up.

Julian-O added a commit to Julian-O/kivy that referenced this issue Dec 12, 2023
Sort imports according to PEP8.
Use built-in `os.stat` instead of win32file's `GetFileAttributesExW()` because it handles (in use) system files.
^ Fixes kivy#5873
Stop (conditionally) importing win32file.
Add support for macOS's UF_Hidden attributes.
Confirm new tests are now passing on Windows.
@Julian-O Julian-O self-assigned this Dec 12, 2023
Julian-O added a commit to Julian-O/kivy that referenced this issue Dec 12, 2023
* Added failing test before implementing fix.
* Added super-basic iconview test, because the code is never exercised.
* Refactor is_hidden so it doesn't fail: Use built-in `os.stat` instead of win32file's `GetFileAttributesExW()` because it handles (in use) system files.
* Sort imports according to PEP8.
* Stop (conditionally) importing win32file.
* Add support for macOS's UF_Hidden attributes.
* Confirm new tests are now passing.
@Julian-O Julian-O linked a pull request Dec 12, 2023 that will close this issue
7 tasks
Copy link

This issue has been automatically closed because there has been no response to our request for more information from the original author. With only the information that is currently in the issue, we don't have the means to take action. Please reach out if you have or find the answers we need so that we can investigate further.

@Julian-O Julian-O removed the awaiting-reply Waiting for reply from issue opener, will be closed if no reply label Jan 11, 2024
@Julian-O Julian-O reopened this Jan 11, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Component: Widgets kivy/uix, style.kv Platform: Windows Status: Needs-analysis Issue needs to be analyzed if it's real
Projects
None yet
Development

Successfully merging a pull request may close this issue.