{"id":201,"date":"2015-08-27T21:16:05","date_gmt":"2015-08-28T01:16:05","guid":{"rendered":"http:\/\/clusterbleep.net\/blog\/?p=201"},"modified":"2015-08-31T07:19:25","modified_gmt":"2015-08-31T11:19:25","slug":"kivy-interactive-applications-and-games-in-python-2nd-edition-review","status":"publish","type":"post","link":"http:\/\/clusterbleep.net\/blog\/2015\/08\/27\/kivy-interactive-applications-and-games-in-python-2nd-edition-review\/","title":{"rendered":"Kivy &#8211; Interactive Applications and Games in Python, 2nd Edition Review"},"content":{"rendered":"<p>I was recently asked by the author to review <a href=\"https:\/\/www.packtpub.com\/application-development\/kivy-interactive-applications-python-second-edition\">the second edition of &#8220;Kivy &#8211; Interactive Applications in Python&#8221; from Packt Publishing<\/a>. I had difficulty recommending the first edition mostly due to the atrocious editing &#8211; or lack thereof &#8211; that it had suffered. It really reflected badly on Packt, and since it was the only Kivy book available, I did not want that same inattention to quality to reflect on Kivy. Packt gave me a free ebook copy of this book in exchange for agreeing to do this review.<\/p>\n<p>At any rate, the second edition is much improved over the first. Although a couple of glaring issues remain, it looks like it has been visited by at least one native English speaking editor. The Kivy content is good, and I can now recommend it for folks who know Python and want to get started with Kivy. The following is <a href=\"https:\/\/www.amazon.com\/review\/RD1K713ZV0Q27\/ref=pe_1098610_137716200_cm_rv_eml_rv0_rv\">the review I posted to Amazon<\/a>:<\/p>\n<p>&#8212;<\/p>\n<p>This second edition of &#8220;Kivy &#8211; Interactive Applications and Games in Python&#8221; is much improved from the first edition. The atrocious grammar throughout the first edition book has mostly been fixed, although it&#8217;s still worse than what I expect from a professionally edited book. The new chapters showcase current Kivy features while reiterating how to build a basic Kivy app, and the book covers an impressive amount material in its nearly 185 pages. I think this is due largely to the efficiency and power of coding in Python and Kivy, but also to the carefully-chosen projects the author selected for his readers to create. Despite several indentation issues in the example code and the many grammar issues typical of Packt&#8217;s books, I can now recommend this book for intermediate to experienced Python programmers who are looking to get started with Kivy.<\/p>\n<p>Chapter one is a good, quick introduction to a minimal Kivy app, layouts, widgets, and their properties.<\/p>\n<p>Chapter two is an excellent introduction and exploration of basic canvas features and usage. This is often a difficult concept for beginners to understand, and this chapter handles it well.<\/p>\n<p>Chapter three covers events and binding of events, but is much denser and difficult to grok than chapter two. It will likely require multiple reads of the chapter to get a good understanding of the topic, but if you&#8217;re persistent, everything you need is there.<\/p>\n<p>Chapter four contains a hodge-podge of Kivy user interface features. Screens and scatters are covered well, but gestures still feel like magic. I have yet to find a good in-depth explanation of gestures in Kivy, so this does not come as a surprise. Behaviors is a new feature in Kivy and a new section in this second edition of the book. Changing default styles is also covered in this chapter. The author does not talk about providing a custom atlas for styling, but presents an alternative method for theming involving Factories.<\/p>\n<p>In chapter six the author does a good job of covering animations, and introduces sounds, the clock, and atlases. He brings these pieces together to build a version of Space Invaders, in about 500 lines of Python and KV. It ends up a bit code-dense, but the result is a fun game and a concise code base to play around with.<\/p>\n<p>In chapter seven the author builds a TED video player including subtitles and an Android actionbar. There is perhaps too much attention paid to the VideoPlayer widget, but the resulting application is a useful base for creating other video applications.<\/p>\n<p>&#8212;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>I was recently asked by the author to review the second edition of &#8220;Kivy &#8211; Interactive Applications in Python&#8221; from Packt Publishing. I had difficulty recommending the first edition mostly due to the atrocious editing &#8211; or lack thereof &#8211; &hellip; <a href=\"http:\/\/clusterbleep.net\/blog\/2015\/08\/27\/kivy-interactive-applications-and-games-in-python-2nd-edition-review\/\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"categories":[15,25,14,7],"tags":[],"class_list":["post-201","post","type-post","status-publish","format-standard","hentry","category-grpug","category-kivy","category-python","category-tech"],"_links":{"self":[{"href":"http:\/\/clusterbleep.net\/blog\/wp-json\/wp\/v2\/posts\/201","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/clusterbleep.net\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/clusterbleep.net\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/clusterbleep.net\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/clusterbleep.net\/blog\/wp-json\/wp\/v2\/comments?post=201"}],"version-history":[{"count":0,"href":"http:\/\/clusterbleep.net\/blog\/wp-json\/wp\/v2\/posts\/201\/revisions"}],"wp:attachment":[{"href":"http:\/\/clusterbleep.net\/blog\/wp-json\/wp\/v2\/media?parent=201"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/clusterbleep.net\/blog\/wp-json\/wp\/v2\/categories?post=201"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/clusterbleep.net\/blog\/wp-json\/wp\/v2\/tags?post=201"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}