{"id":1439,"date":"2017-12-11T15:01:30","date_gmt":"2017-12-11T21:01:30","guid":{"rendered":"http:\/\/www.alandmoore.com\/blog\/?p=1439"},"modified":"2019-06-09T22:14:05","modified_gmt":"2019-06-10T03:14:05","slug":"big-news-a-book-is-on-the-way","status":"publish","type":"post","link":"https:\/\/alandmoore.com\/blog\/2017\/12\/11\/big-news-a-book-is-on-the-way\/","title":{"rendered":"Big news:  A book is on the way!"},"content":{"rendered":"<p>This blog has been a tad slow over the last year or so, mostly because I&#8217;ve been concentrating more on <a href=\"https:\/\/www.youtube.com\/channel\/UC58HBr4oSoX-0qvWDJ9K3fg\">making music <\/a>than writing code; but that all changed when I was contacted last month with an opportunity to write a book on Tkinter.\u00a0 So, sometime early next summer, my first book, <em>Python GUI Programming with Tkinter<\/em>, will be available from <a href=\"https:\/\/www.packtpub.com\/\">Packt Publications<\/a>.<\/p>\n<h2>Wait, Tkinter?\u00a0 In 2018??<\/h2>\n<p>Yes, I know what you&#8217;re thinking; it&#8217;s either &#8220;What on earth is Tkinter?&#8221; or &#8220;Why would you do a book on it in 2018?&#8221;<\/p>\n<p>For those asking the first question, <a href=\"https:\/\/docs.python.org\/3.6\/library\/tkinter.html\">Tkinter<\/a> is a GUI programming library built into the Python standard library; and if that doesn&#8217;t mean anything to you, you might not be the target demographic for this book. \ud83d\ude42<\/p>\n<p>For those asking the second question &#8212; well, hear me out.<\/p>\n<p>To start with, this book isn&#8217;t just going to be a dry Tkinter how-to; it&#8217;s fundamentally a book about writing end-user applications and choosing the right technology to solve real-world problems (particularly in the workplace).\u00a0 I&#8217;ll be going through the process of dissecting a business need and building an appropriate software solution.<\/p>\n<p>The simplicity and ready availability of Tkinter makes it a decent choice for teaching budding Python programmers these principles.<\/p>\n<p>But as for Tkinter itself, I think it gets a bum rap from the Python community.\u00a0 Sure, it&#8217;s not a glamorous, trendy library.\u00a0 It doesn&#8217;t have declarative syntax, a million and one widgets for every occasion, a Javascriptesque mini-language for form automation, or a 100 Mb browser exectuable bundled into it.\u00a0 But Tkinter hardly deserves the pariah status some Python coders give it.<\/p>\n<p>The three things I mainly hear about Tkinter are:<\/p>\n<h3>It&#8217;s ugly<\/h3>\n<p>Not so many years ago, Tkinter was hideous.\u00a0 Aliased fonts, limited theming, and widgets that escaped from a 1990s Unix desktop made for a look that screamed LEGACY and indelibly marked Tkinter as deprecated in the minds of many Python coders.\u00a0 This has changed though; fonts are now anti-aliased, and the TTK widget set provides themable, platform-appropriate widgets.\u00a0 Tkinter may not give you the Material Design look or animated semitranslucent widgets, but for your standard utility, control panel, or data-drive application, it looks fine.<\/p>\n<h3>The widgets are too simple<\/h3>\n<p>Tkinter&#8217;s form widgets are a tad disappointing when you first use them.\u00a0 Comboboxes and Spinboxes don&#8217;t behave like their counterparts in other toolkits.\u00a0 In the book I&#8217;m going to turn this weakness into a strength, by showing you how to extend and customize these widgets to behave precisely the way our users need them to behave.<\/p>\n<h3>It doesn&#8217;t scale well to larger applications<\/h3>\n<p>I&#8217;ve read (and maybe even said?) many times that Tkinter is &#8220;fine for small apps, but doesn&#8217;t scale to big things&#8221;.\u00a0 That may be true depending on your definition of &#8220;small&#8221; and &#8220;big&#8221;, but most of us aren&#8217;t building Microsoft Office.\u00a0 The book is going to go through creating a moderately-sized database application that would be pretty typical of in-house software and I&#8217;ll be demonstrating techniques to make Tkinter scale.<\/p>\n<h2>Exciting times, folks<\/h2>\n<p>This is my first experience as an author, so I&#8217;m hoping it goes well.\u00a0 If you have particular aspects of Tkinter you&#8217;d like to see covered, let me know!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>This blog has been a tad slow over the last year or so, mostly because I&#8217;ve been concentrating more on making music than writing code; but that all changed when I was contacted last month with an opportunity to write a book on Tkinter.\u00a0 So, sometime early next summer, my first book, Python GUI Programming [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[31,7,5],"tags":[97,99,47,40,65],"class_list":["post-1439","post","type-post","status-publish","format-standard","hentry","category-life-2","category-programming","category-technology","tag-books","tag-my-projects","tag-python","tag-site-news","tag-tkinter"],"_links":{"self":[{"href":"https:\/\/alandmoore.com\/blog\/wp-json\/wp\/v2\/posts\/1439","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/alandmoore.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/alandmoore.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/alandmoore.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/alandmoore.com\/blog\/wp-json\/wp\/v2\/comments?post=1439"}],"version-history":[{"count":4,"href":"https:\/\/alandmoore.com\/blog\/wp-json\/wp\/v2\/posts\/1439\/revisions"}],"predecessor-version":[{"id":1618,"href":"https:\/\/alandmoore.com\/blog\/wp-json\/wp\/v2\/posts\/1439\/revisions\/1618"}],"wp:attachment":[{"href":"https:\/\/alandmoore.com\/blog\/wp-json\/wp\/v2\/media?parent=1439"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/alandmoore.com\/blog\/wp-json\/wp\/v2\/categories?post=1439"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/alandmoore.com\/blog\/wp-json\/wp\/v2\/tags?post=1439"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}