This issue tracker has been migrated to GitHub ,
and is currently read-only.
For more information,
see the GitHub FAQs in the Python's Developer Guide.
Created on 2016年09月01日 00:33 by terry.reedy, last changed 2022年04月11日 14:58 by admin. This issue is now closed.
| Files | ||||
|---|---|---|---|---|
| File name | Uploaded | Description | Edit | |
| flashy.diff | terry.reedy, 2016年09月01日 00:33 | review | ||
| Pull Requests | |||
|---|---|---|---|
| URL | Status | Linked | Edit |
| PR 2171 | merged | terry.reedy, 2017年06月13日 18:06 | |
| PR 2172 | merged | terry.reedy, 2017年06月13日 18:44 | |
| Messages (14) | |||
|---|---|---|---|
| msg274080 - (view) | Author: Terry J. Reedy (terry.reedy) * (Python committer) | Date: 2016年09月01日 00:33 | |
This issue follows-up on #27732, which suppressed beeps during IDLE tests, I want to also suppress the flashing of tk widget boxes, which has become visually obnoxious with the increasing number of tests. Adding root.withdraw() after root = Tk() solves the problem for all current tests. For test_textview, this requires the fix of a bad cleanup call and addition of another. It appears that the textview toplevels must be destroyed before the cleanup call to root.update_idletasks() or else they are made visible. The idletasks call is needed to avoid '''can't invoke "event" command''' (even with all toplevels gone). The backports will have fewer changes because there are fewer tests. |
|||
| msg274081 - (view) | Author: Terry J. Reedy (terry.reedy) * (Python committer) | Date: 2016年09月01日 00:41 | |
This is also a follow-up to #27918. Importing test.support causes a flash in the process of testing whether tkinter/tk work. So I was never able to get IDLE tests to completely stop flashing. Adding 'root.withdraw' to test.support.__init__ solves the import flash, and with that fix, individual IDLE tests and test_idle no longer flash. |
|||
| msg274083 - (view) | Author: Roundup Robot (python-dev) (Python triager) | Date: 2016年09月01日 01:09 | |
New changeset bf0cb86c6219 by Terry Jan Reedy in branch '2.7': Issue #27922: IDLE tests no longer flash tk widgets. https://hg.python.org/cpython/rev/bf0cb86c6219 New changeset ff3a6303c5b1 by Terry Jan Reedy in branch '3.5': Issue #27922: IDLE tests no longer flash tk widgets. https://hg.python.org/cpython/rev/ff3a6303c5b1 New changeset fc711879c64a by Terry Jan Reedy in branch 'default': Issue #27922: IDLE tests no longer flash tk widgets (Merge 3.5). https://hg.python.org/cpython/rev/fc711879c64a |
|||
| msg274378 - (view) | Author: Roundup Robot (python-dev) (Python triager) | Date: 2016年09月04日 19:02 | |
New changeset 6e4475894a79 by Terry Jan Reedy in branch '2.7': Issue #27922: IDLE test_idlehistory no longer flash tk widgets. https://hg.python.org/cpython/rev/6e4475894a79 |
|||
| msg274389 - (view) | Author: Xiang Zhang (xiang.zhang) * (Python committer) | Date: 2016年09月05日 04:48 | |
Hi Terry, I think this issue may be not completed. While running idlelib test with -ugui, I can sometimes still get a window flash. I think it's due to test_searchbase. Running python -m idlelib.idle_test.test_searchbase can reproduce the flash and adding withdraw doesn't work for me. |
|||
| msg274390 - (view) | Author: Xiang Zhang (xiang.zhang) * (Python committer) | Date: 2016年09月05日 05:49 | |
After some tries, I think it seems to be caused by the second open in test_open_and_close in SearchDialogBaseTest. The second open calls self.top.deiconify. |
|||
| msg274415 - (view) | Author: Terry J. Reedy (terry.reedy) * (Python committer) | Date: 2016年09月05日 18:07 | |
Thanks for the good detective work. The flash is always there, somewhere, though sometimes minimal. SearchBase.open begins with if not self.top: self.create_widgets() else: self.top.deiconify() self.top.tkraise() The first and second open()s call the first and second branch. I am puzzled that the first does not flash, as top is created 'normal' rather than 'withdrawn'. It also turn out that commenting out either of the two lines stops the flash. The flash could be prevented by changing 'else' to 'else if not _utest' and adding '_utest' as a parameter and passing True, as I have elsewhere. However, the purpose of the second open() is to take that branch for near 100% coverage, and I have previously only used _utest to avoid blocking .wait_window calls. I think I am going to leave this alone for now, but please feel free to comment on other IDLE issues. |
|||
| msg274495 - (view) | Author: Xiang Zhang (xiang.zhang) * (Python committer) | Date: 2016年09月06日 02:12 | |
It's fine, knowing that the maintainer thinks this behaviour is okay. :) |
|||
| msg276737 - (view) | Author: Terry J. Reedy (terry.reedy) * (Python committer) | Date: 2016年09月16日 19:01 | |
It is more a matter of tradeoffs rather than 'okay'. There is no general pydev rule against gui flashing. The tk and ttk gui tests still do, but that is primarily Serhiy's concern. The IDLE tests are at most perhaps a third complete, so they would have become collectively 3 or more times worse. I should run the IDLE tests at least once for each patch and usually do it multiple times. When I work on a module or its tests, I tend work incrementally and run the test for the module 10 or 20 times or more. So my first concern is my own eyes and mental state. Second, I plan to ask others to run test_idle to make up for the lack of buildbot coverage, and I will feel better about doing so after the patches already made. If one or a few flashes are left, I and others are still much better off. In this case, there are two obvious fixes, but I don't like either. Maybe I will come up with a third I like better, perhaps after some refactoring of the module. I would also like to better understand the detailed behavior. In the meanwhile, I reopened to add a comment to the test, so I don't lose track of the source of the remaining flash. |
|||
| msg295946 - (view) | Author: Terry J. Reedy (terry.reedy) * (Python committer) | Date: 2017年06月13日 18:01 | |
Using findleak.py, attached to #30642, modified to always print the filename, I discovered that test_parenmatch also flashes (along with test_searchbase). The leak test runs each test_xyz module 9 times, so is a good way to see flashing. Adding 'root.withdraw' stops the single flash when running test_parenmatch once. However, it does not stop flashing when running 9 times with -R: refleak test. Flash continues even if class is reduced to class ParenMatchTest(unittest.TestCase): @classmethod def setUpClass(cls): cls.root = Tk() cls.root.withdraw() @classmethod def tearDownClass(cls): cls.root.destroy() del cls.root def test_dummy(self): pass This is a puzzle since the same skeleton is in several other files. In fact, at least one, test_autocomplete, does not even have root.withdraw. In any case, I will add it here. |
|||
| msg295948 - (view) | Author: Terry J. Reedy (terry.reedy) * (Python committer) | Date: 2017年06月13日 18:40 | |
New changeset 049cf2bb44038351e1b2eed4fc7b1b522329e550 by terryjreedy in branch 'master': bpo-27922: Stop gui flash from idle_test.test_parenmatch (#2171) https://github.com/python/cpython/commit/049cf2bb44038351e1b2eed4fc7b1b522329e550 |
|||
| msg295955 - (view) | Author: Terry J. Reedy (terry.reedy) * (Python committer) | Date: 2017年06月13日 19:41 | |
New changeset d92ee3ea622b6eee5846681bad5595cfedcf20b6 by terryjreedy in branch '3.6': [3.6]bpo-27922: Stop gui flash from idle_test.test_parenmatch (#2171) (#2172) https://github.com/python/cpython/commit/d92ee3ea622b6eee5846681bad5595cfedcf20b6 |
|||
| msg295956 - (view) | Author: Terry J. Reedy (terry.reedy) * (Python committer) | Date: 2017年06月13日 19:41 | |
Using findleak.py, attached to #30642, modified to always print the filename, I discovered that test_parenmatch also flashes (along with test_searchbase). The leak test runs each test_xyz module 9 times, so is a good way to see flashing. Adding 'root.withdraw' stops the single flash when running test_parenmatch once. However, it does not stop flashing when running 9 times with -R: refleak test. Flash continues even if class is reduced to class ParenMatchTest(unittest.TestCase): @classmethod def setUpClass(cls): cls.root = Tk() cls.root.withdraw() @classmethod def tearDownClass(cls): cls.root.destroy() del cls.root def test_dummy(self): pass This is a puzzle since the same skeleton is in several other files. In fact, at least one, test_autocomplete, does not even have root.withdraw. In any case, I will add it here. |
|||
| msg370856 - (view) | Author: Terry J. Reedy (terry.reedy) * (Python committer) | Date: 2020年06月06日 22:13 | |
After doing away with most of the flashes, we started adding tests using key and mouse event_generate, which seemed to require a visible GUI. So the goal seems a lost cause. If I revisit, a new issue. |
|||
| History | |||
|---|---|---|---|
| Date | User | Action | Args |
| 2022年04月11日 14:58:35 | admin | set | github: 72109 |
| 2020年06月06日 22:13:54 | terry.reedy | set | status: open -> closed messages: + msg370856 |
| 2017年06月13日 19:41:25 | terry.reedy | set | messages: + msg295956 |
| 2017年06月13日 19:41:01 | terry.reedy | set | messages: + msg295955 |
| 2017年06月13日 18:44:47 | terry.reedy | set | pull_requests: + pull_request2224 |
| 2017年06月13日 18:40:12 | terry.reedy | set | messages: + msg295948 |
| 2017年06月13日 18:06:20 | terry.reedy | set | pull_requests: + pull_request2223 |
| 2017年06月13日 18:01:18 | terry.reedy | set | messages:
+ msg295946 versions: + Python 3.7, - Python 2.7, Python 3.5 |
| 2016年09月16日 19:01:25 | terry.reedy | set | status: closed -> open messages: + msg276737 |
| 2016年09月06日 02:12:36 | xiang.zhang | set | messages: + msg274495 |
| 2016年09月05日 18:07:03 | terry.reedy | set | messages: + msg274415 |
| 2016年09月05日 05:49:03 | xiang.zhang | set | messages: + msg274390 |
| 2016年09月05日 04:48:13 | xiang.zhang | set | nosy:
+ xiang.zhang messages: + msg274389 |
| 2016年09月04日 19:02:54 | python-dev | set | messages: + msg274378 |
| 2016年09月01日 01:28:07 | terry.reedy | set | status: open -> closed resolution: fixed stage: needs patch -> resolved |
| 2016年09月01日 01:09:21 | python-dev | set | nosy:
+ python-dev messages: + msg274083 |
| 2016年09月01日 00:41:55 | terry.reedy | set | messages: + msg274081 |
| 2016年09月01日 00:33:36 | terry.reedy | create | |