python / cpython

The Python programming language
https://www.python.org/
Other
60.92k stars 29.41k forks source link

tkinter messagebox is sloppy #82830

Open 78a6bf11-a01d-46d5-ba37-0e5218983f8f opened 4 years ago

78a6bf11-a01d-46d5-ba37-0e5218983f8f commented 4 years ago
BPO 38649
Nosy @serhiy-storchaka, @lambertdw

Note: these values reflect the state of the issue at the time it was migrated and might not reflect the current state.

Show more details

GitHub fields: ```python assignee = 'https://github.com/serhiy-storchaka' closed_at = None created_at = labels = ['type-feature', 'tests', '3.10', 'docs'] title = 'tkinter messagebox is sloppy' updated_at = user = 'https://github.com/lambertdw' ``` bugs.python.org fields: ```python activity = actor = 'serhiy.storchaka' assignee = 'serhiy.storchaka' closed = False closed_date = None closer = None components = ['Documentation', 'Tests'] creation = creator = 'David Lambert' dependencies = [] files = [] hgrepos = [] issue_num = 38649 keywords = [] message_count = 4.0 messages = ['355729', '355762', '360092', '383769'] nosy_count = 3.0 nosy_names = ['docs@python', 'serhiy.storchaka', 'David Lambert'] pr_nums = [] priority = 'normal' resolution = None stage = None status = 'open' superseder = None type = 'enhancement' url = 'https://bugs.python.org/issue38649' versions = ['Python 3.10'] ```

78a6bf11-a01d-46d5-ba37-0e5218983f8f commented 4 years ago

Does aksokcancel return "true" or True ? The docstring should say True This is pervasive throughout the module. tkinter has such a mishmash of numbers supplied as strings, strings supplied as constants making this carelessness egregious. On the topic of constants, the messagebox module redefines OK. You might argue that the definition didn't change. I suspect this issue applies to all versions of tkinter or Tkinter having the messagebox.

# types
ABORTRETRYIGNORE = "abortretryignore"
OK = "ok"
...

# replies ... OK = "ok"

def askokcancel(title=None, message=None, **options):
    "Ask if operation should proceed; return true if the answer is ok"
    s = _show(title, message, QUESTION, OKCANCEL, **options)
    return s == OK
brettcannon commented 4 years ago

Please note that calling something "sloppy" and that somehow its development was done in some "carelessness" fashion to the point of being "egregious" is not motivating to others to try and help. Trying to support all of this code for free in one's spare time is not easy, so I would ask you try to be more understanding and nicer in your comments.

78a6bf11-a01d-46d5-ba37-0e5218983f8f commented 4 years ago

Sometimes I say nice things about python.

https://www.quora.com/Is-Python-fast-yet/answer/David-Lambert-86?__nsrc__=4&__snid3__=6376944631

On 10/31/19 1:14 PM, Brett Cannon wrote:

Brett Cannon \brett@python.org\ added the comment:

Please note that calling something "sloppy" and that somehow its development was done in some "carelessness" fashion to the point of being "egregious" is not motivating to others to try and help. Trying to support all of this code for free in one's spare time is not easy, so I would ask you try to be more understanding and nicer in your comments.

---------- nosy: +brett.cannon


Python tracker \report@bugs.python.org\ \https://bugs.python.org/issue38649\


serhiy-storchaka commented 3 years ago

I agree that there is a problem. tkinter.messagebox is poorly documented. Different functions can return True, False, None or the name of the button, and it is not specified which function what returns. Set of acceptable values for type and icon are not documented. And there are no tests, so we cannot be sure that all works as expected on all platforms.

I am working on it.