Post by Uncle Buddy on Jan 21, 2022 16:26:37 GMT -8
First things first: I may be mad in general but I'm not mad at Tkinter. Sure, Tkinter has some lapses, in particular the supposedly modern-looking ttk widgets... don't get me started on that broken, unfinished, garbled, un-Tkinkerish disaster.
As for what I'm mad about in general, well it's simple. I miss my home planet. It's frustrating to be among your species, non-stop, decade after decade. I keep trying to explain how I see things but of course this is meaningless to you people. I'm aware that I am an interloper on your planet, a guest with attitude, but it's not that I'm mad about it really, it's more like I'm old and tired and things keep getting weirder and weirder. I hope you understand, but I know you don't. So let's get to the point.
The main complaints I've seen about Python's included GUIware Tkinter are these: it's old, it's decrepit, it's ancient, it doesn't look modern, and it's not being developed anymore so these things are not gonna change.
The process of learning to write my first GUI apps while concurrently learning to write my first Python... it was not easy. On my planet we have no computers, just delicious food falling from the sky, and clean rivers, and stuff like that. I would personally be lounging around down by the river right now drinking gallons of river water if the river wasn't clogged with old computer parts and other disposable plastics, not to mention various other unmentionable waste products. So ironically, I spend all my time at the computer because your species has ruined everything else on earth.
Now I don't give a good goldarn that Tkinter doesn't look like a smartphone app. Today's modern is tomorrow's kitsch. And I'm even starting to wonder whether I might have over-reacted to the sneering unresponsiveness of ttk widgets when trying to configure them, by replacing them all instead of switching to wxPython sooner. But in fact, it's making my own widgets that has taught me how to use classes (and when to not use them). Replacing the recalcitrant ttk widgets that were incongruously glopped onto Tkinter so long ago--and then abandoned by their creators--has been a huge learning experience for me and I don't regret a single moment of it. As a matter of fact, I considered switching to wxPython long ago but at that time I still feared classes so thought better of it. Why has this changed?
Not that wxPython looks that great either. Like I said, it's not about looks so much. If Treebard is here to stay, then it needs to be written in a language that's here to stay. Like Python or JavaScript. Tkinter isn't going anywhere soon, and those who claim it will never be replaced by wxPython as Python's included GUI toolkit might even be right. But I doubt it. My little drop of research tells me that these defenders of the past are just being brash. Well everyone gets to have an opinion, and in my opinion, a GUI toolkit that has barely been developed since 1884 is not likely to be taken seriously much longer.
No, it really isn't about looks. The most important parts of a GUI to me are its practicality and the visibility and usefulness of its parts, not whether buttons can be any desired shape, etc. I tried Kivy, but I kept running into built-in terminology like "collision" and "touch". When it comes to constant nagging that everything is now supposed to be mobile-first, you'll just have to excuse me. I'm after practicality and a kinda generic look that is never likely to be yesterday's fashion. An example of yesterday's fashion (hopefully): making everything so flat that you can't tell moving parts from static backgrounds. And I have little use for transitions, when they're used just to amuse and serve no purpose. In these cases it's generally the bored GUI designer, not the GUI user, who is amused by unnecessary transitions.
And I will not be the one to adapt a complex data manipulation program to run on a telephone's itty-bitty screen. I think Kivy is a great program but it's not for me. I want to graduate from Tkinter and then use the tools that Tkinter gave me, not throw them in the trash because wee touch screens are supposedly the real world now. The logical next step for a novice like me, now that I love classes, is wxPython. But Kivy has made class-oriented programming complicated enough that it feels the need to hide the complexity under a new "kvlang". So my newfound ability to write Python and fiddle around with classes should now be hidden and my amazing light should not shine. Just use markup, it's "easier". Like I said, Kivy is great and no doubt will become greater. But I never cared for the whole idea of frameworks or complexities that seem to require them. Why not simplify the Kivy syntax (even if it means starting over) instead of slapping on a layer of supposed simplicity to muffle the noise?
No, the reason I'm switching to wxPython is that I love Tkinter.
So far, wxPython seems to be what it would be like to use Tkinter if Tkinter weren't old, decrepit, and no longer being developed. The Treebard GPS project is all about code that can be understood and written by genealogists. Most good genealogists are smart and picky. What more does it take to learn coding besides the desire and spare time to do it? Smart and picky is also the basic configuration of a coder, no?
A jump to Kivy was going to make me able to extrude widgets that look any way I want. Like HTML and CSS have been able to do since the dawn of time. But it's time to face the facts: this project is not about stuffing my poor, shrivelled ego full of go-go-juice, wasting my precious time on this earth caring only about what the app looks like. As long as most of the app is configurable easily, I will not do what I did with Tkinter and try to re-invent the dang thing. I will use wxPython widgets as-is. Even if some of them are blaring white. I promise.
In spite of my personal pettiness during my first few years as a GUI maker ("My app will not have any Windows system colors in it anywhere...") it's really not about how it looks, as long as I can change most colors easily. What actually matters is that the GUIware I decide to use is still here (and not continuously being bashed further and further into oblivion by what we used to call "the mod set") as long as genealogists are still smart and picky enough to want genieware that they can create themselves. Tkinter is now bashware. Bully bait. It always will be bashed as long as it manages to hang on as Python's built-in GUI toolkit without radically updating itself. wxPython, on the other hand, is actively being developed. The creator of Python is quoted as having said that the only reason Tkinter got the job instead of wxPython is that wxPython wasn't around when the decision was made. If Guido prefers wxPython to Tkinter, then so do I. If I have learned nothing else in the past three or four years of banging away at Python, it's that I'm not even close to being the smartest person in the room. I don't mind being full of opinions, but I try to draw the line at being full of **it.
The main reason I chose to use Tkinter is that it comes with Python. It doesn't have to be installed. I did in fact pip install wxPython long ago, but didn't want other Treebard GPS team members to have to pip install anything, since the team will presumably be peopled by genealogists who dabble in coding and not the other way around. But after all the trouble I've had to go to, in order to adapt an outdated, underdeveloped GUIware to my finicky prejudices... I think hypothetical members of a Treebard GPS team would be better off pip-installing wxPython instead of using Tkinter from out-of-the-box Python. And I found that to use Tkinter well, the Pillow library for graphics had to be pip-installed anyway. So, if we have to pip install something no matter what, let's pip install the right thing: a GUI toolkit that's being actively developed right now. I think wxPython uses Pillow too, but it's part of the wxPython installation.
I used to find complicated instructions for pip-installing things, but lately this seems to be getting much simpler. Possibly the coding world is getting used to the influx of noobs like me. Even Kivy 2.0.0 is super easy to pip install now, and the instructions don't even suck. While I still think a dependency-free experience would be ideal for Treebard GPS team wanna-bes, it's proved unreasonable to expect 100% compliance to this ideal. I'd still like to see wxPython be the only dependency that has to be installed in order for someone to play around with adapting Treebard GPS code to their interests.
Here's an interesting discussion on wxPython vs. Tkinter.
As for what I'm mad about in general, well it's simple. I miss my home planet. It's frustrating to be among your species, non-stop, decade after decade. I keep trying to explain how I see things but of course this is meaningless to you people. I'm aware that I am an interloper on your planet, a guest with attitude, but it's not that I'm mad about it really, it's more like I'm old and tired and things keep getting weirder and weirder. I hope you understand, but I know you don't. So let's get to the point.
The main complaints I've seen about Python's included GUIware Tkinter are these: it's old, it's decrepit, it's ancient, it doesn't look modern, and it's not being developed anymore so these things are not gonna change.
The process of learning to write my first GUI apps while concurrently learning to write my first Python... it was not easy. On my planet we have no computers, just delicious food falling from the sky, and clean rivers, and stuff like that. I would personally be lounging around down by the river right now drinking gallons of river water if the river wasn't clogged with old computer parts and other disposable plastics, not to mention various other unmentionable waste products. So ironically, I spend all my time at the computer because your species has ruined everything else on earth.
Now I don't give a good goldarn that Tkinter doesn't look like a smartphone app. Today's modern is tomorrow's kitsch. And I'm even starting to wonder whether I might have over-reacted to the sneering unresponsiveness of ttk widgets when trying to configure them, by replacing them all instead of switching to wxPython sooner. But in fact, it's making my own widgets that has taught me how to use classes (and when to not use them). Replacing the recalcitrant ttk widgets that were incongruously glopped onto Tkinter so long ago--and then abandoned by their creators--has been a huge learning experience for me and I don't regret a single moment of it. As a matter of fact, I considered switching to wxPython long ago but at that time I still feared classes so thought better of it. Why has this changed?
Not that wxPython looks that great either. Like I said, it's not about looks so much. If Treebard is here to stay, then it needs to be written in a language that's here to stay. Like Python or JavaScript. Tkinter isn't going anywhere soon, and those who claim it will never be replaced by wxPython as Python's included GUI toolkit might even be right. But I doubt it. My little drop of research tells me that these defenders of the past are just being brash. Well everyone gets to have an opinion, and in my opinion, a GUI toolkit that has barely been developed since 1884 is not likely to be taken seriously much longer.
No, it really isn't about looks. The most important parts of a GUI to me are its practicality and the visibility and usefulness of its parts, not whether buttons can be any desired shape, etc. I tried Kivy, but I kept running into built-in terminology like "collision" and "touch". When it comes to constant nagging that everything is now supposed to be mobile-first, you'll just have to excuse me. I'm after practicality and a kinda generic look that is never likely to be yesterday's fashion. An example of yesterday's fashion (hopefully): making everything so flat that you can't tell moving parts from static backgrounds. And I have little use for transitions, when they're used just to amuse and serve no purpose. In these cases it's generally the bored GUI designer, not the GUI user, who is amused by unnecessary transitions.
And I will not be the one to adapt a complex data manipulation program to run on a telephone's itty-bitty screen. I think Kivy is a great program but it's not for me. I want to graduate from Tkinter and then use the tools that Tkinter gave me, not throw them in the trash because wee touch screens are supposedly the real world now. The logical next step for a novice like me, now that I love classes, is wxPython. But Kivy has made class-oriented programming complicated enough that it feels the need to hide the complexity under a new "kvlang". So my newfound ability to write Python and fiddle around with classes should now be hidden and my amazing light should not shine. Just use markup, it's "easier". Like I said, Kivy is great and no doubt will become greater. But I never cared for the whole idea of frameworks or complexities that seem to require them. Why not simplify the Kivy syntax (even if it means starting over) instead of slapping on a layer of supposed simplicity to muffle the noise?
No, the reason I'm switching to wxPython is that I love Tkinter.
So far, wxPython seems to be what it would be like to use Tkinter if Tkinter weren't old, decrepit, and no longer being developed. The Treebard GPS project is all about code that can be understood and written by genealogists. Most good genealogists are smart and picky. What more does it take to learn coding besides the desire and spare time to do it? Smart and picky is also the basic configuration of a coder, no?
A jump to Kivy was going to make me able to extrude widgets that look any way I want. Like HTML and CSS have been able to do since the dawn of time. But it's time to face the facts: this project is not about stuffing my poor, shrivelled ego full of go-go-juice, wasting my precious time on this earth caring only about what the app looks like. As long as most of the app is configurable easily, I will not do what I did with Tkinter and try to re-invent the dang thing. I will use wxPython widgets as-is. Even if some of them are blaring white. I promise.
In spite of my personal pettiness during my first few years as a GUI maker ("My app will not have any Windows system colors in it anywhere...") it's really not about how it looks, as long as I can change most colors easily. What actually matters is that the GUIware I decide to use is still here (and not continuously being bashed further and further into oblivion by what we used to call "the mod set") as long as genealogists are still smart and picky enough to want genieware that they can create themselves. Tkinter is now bashware. Bully bait. It always will be bashed as long as it manages to hang on as Python's built-in GUI toolkit without radically updating itself. wxPython, on the other hand, is actively being developed. The creator of Python is quoted as having said that the only reason Tkinter got the job instead of wxPython is that wxPython wasn't around when the decision was made. If Guido prefers wxPython to Tkinter, then so do I. If I have learned nothing else in the past three or four years of banging away at Python, it's that I'm not even close to being the smartest person in the room. I don't mind being full of opinions, but I try to draw the line at being full of **it.
The main reason I chose to use Tkinter is that it comes with Python. It doesn't have to be installed. I did in fact pip install wxPython long ago, but didn't want other Treebard GPS team members to have to pip install anything, since the team will presumably be peopled by genealogists who dabble in coding and not the other way around. But after all the trouble I've had to go to, in order to adapt an outdated, underdeveloped GUIware to my finicky prejudices... I think hypothetical members of a Treebard GPS team would be better off pip-installing wxPython instead of using Tkinter from out-of-the-box Python. And I found that to use Tkinter well, the Pillow library for graphics had to be pip-installed anyway. So, if we have to pip install something no matter what, let's pip install the right thing: a GUI toolkit that's being actively developed right now. I think wxPython uses Pillow too, but it's part of the wxPython installation.
I used to find complicated instructions for pip-installing things, but lately this seems to be getting much simpler. Possibly the coding world is getting used to the influx of noobs like me. Even Kivy 2.0.0 is super easy to pip install now, and the instructions don't even suck. While I still think a dependency-free experience would be ideal for Treebard GPS team wanna-bes, it's proved unreasonable to expect 100% compliance to this ideal. I'd still like to see wxPython be the only dependency that has to be installed in order for someone to play around with adapting Treebard GPS code to their interests.
Here's an interesting discussion on wxPython vs. Tkinter.