New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Announcements #142
Comments
New use pattern - Element lookup using Keys
To get an element object from a form, you call This is the new, preferred method for doing Updates on elements. Previously if you wanted to output something to a Text Element, you needed to create the text element outside of the form layout and keep that text element variable around so you can call The new design pattern is thus: Later in your code you can update this Text Element by making this call, assuming the variable form is your FlexForm object: The Demo programs have all been updated to use this new technique. This capability and its impact on the length of programs led to pushing version 2.30 out the door quickly. |
Borderless Windows are HereTry them on your next form. You can expect to see some of these in the Demo programs. You can click anywhere on the window and drag to move it. Don't forget to put an exit key on these windows. Be sure and make an "exit" button or you'll be running task manager to close your windows. The reason is the when you turn on this option, you will not see an icon on your taskbar for the window. This happens on both Windows and Linux. Thus, if you do not supply an exit button, the user will have no means to close the window. |
Grab AnywhereTonight's change is perhaps going to be a really cool thing or one that is going to piss people off. But, hey, I like it this way. If you don't, set As the name implies, you can grab and drag your window using any point on the window, not just the title bar. I was only enabling this when the title bar was turned off. I think it's a much superior way to interact with a window. FlexForm is becoming quite the call! So, enjoy a lazy way of interacting with windows on me. You will want to turn if off for forms with a SLIDER. you need the slider to move, not the window. I'll update the Demos that use sliders to turn off the grab_anywhere. |
TablesThis one has been requested a number of times. Rather than make a Table Element, decided to see if the current PySimpleGUI is capable of making nice tables using standard Elements. The answer seems to be yes, it's possible with existing Elements. The key was to enable text justification in the InputText element. By right justifying the text in those Elements, it's possible to create a nice looking table. Here's an example using a ComboBox and Input Elements. You'll find the code that generated the table in the file Demo_Table_Simulation.py. It requires the latest PySimpleGUI from GitHub in order to use the justification setting. This is a "live keyboard" demo. It updates the table values as you are typing. There are 3 fields at the top of the table. If you enter a value into the 3rd field, the cell that the other 2 cells represents will be changed to that value. Enter 1, 2, 1234 and cell (1,2) will be changed to 1234. There is a new trick demonstrated in this demo that shows off the power of Python. Rather than pass in a string as the key to the Input Elements, I passed a tuple. Nothing about the key requires it to be a string. The only requirement is that you use the same type to look up the element when you call FindElement or use the key to read the return values. This is the code that makes the Input Elements: See how the key is set to (i,j). This allow me to easily find the Element that is represented by (i,j) later. What to access the cell at (0,0)? This you would make this call: Hopefully this is enough capability for the folks that need tables in their forms/window. |
Three Point Oh!So maybe I kinda screwed up the numbering when the last one became 2.30. I didn't think about it looking like 2.3 also. Doh! There have been a lot of changes lately so perhaps it's time for a major bump. It's a clean slate |
|
|
3.0.2 release today to turn off the grab_anywhere feature for non-blocking forms. tkinter is printing out a warning/error message when the form is closed using a button. Doesn't appear to have any effect on the overall functioning, but it's distressing to see. Better to disable this feature for now. Plan is to add back an override mechanism should a user want it. |
RELEASED 3.0.2 |
Floating Toolbar - New demo programThis is an always-on-top, compact floating toolbar. They are super-handy to leave running. Something satisfying about writing code that then gets used often, especially if they make you much more efficient. |
Async FormsUpdated the Readme / primary doc to discuss the use of non-block forms. As explained in the documentation there are a number of techniques to move away from async forms including using the |
Floating Desktop WidgetsI've discovered that in about 30 lines of code you can create a floating desktop widget. If you click the pause button, it switches to Run. This "Widget" is always on top of the other windows. Looking for a way of launching these in a way that have no taskbar icons. If launched from PyCharm it behaves this way. If launched from a Toolbar, the toolbar's window is attached to the timer. Close it and the timer closes. This demo is the first time I've ever combined a ReadNonBlocking with a Read in the same form. The reason for using it in this program is that while the timer is paused, there' s nothing happening so why have the program running the loop when it can wait for the user to do something like click a button. When the button is clicked we return from the Read call. Thank you to jfong for sending an interesting version of this program. His ideas have rolled into a into the project code many times. |
3.7 SupportThanks to @mrstephenneal we can now say that PySimpleGUI works on Python 3.7. There was a button issue causing trouble. Looks like it's fixed now so I think 3.7 is now safe to with PSG. |
Release 3.01.00Menus! (and a Listbox.Update bug) are the big features. Since the Menu code is somewhat isolated, and I want to get some users on it, decided to go ahead and push it all out there in 3.01.00 I didn't mention this in the readme section on menus, but by default (you can't currently turn it off) menus are detachable. If you double-click the dashed line then you get a floating version of that menu. Should make for some pretty interesting user interfaces? |
3.1.1There have been enough bug fixes to trigger another PyPI release. People have been doing more and more with the Update method. These fixes were mostly in those methods. |
Update methods updatedAdded the ability to enable / disable all input elements. A number of Demo programs also refreshed. Expect a PyPI release soon. Note that some Update method changes also changed parameter names from new_value to value, new_values to values. Some were different than others. Removed new_ so they all match now. Sorry to those living on the bleeding edge! Here's a before/after. Elements towards the bottom of the window were disabled. Yes, even buttons can be disabled now. No more needing to gray out your own buttons! |
3.1.2Big change this time around is the ability to disable widgets. All input widgets have an Update method that has the parameter A few critical bugs in there too which pushed up the release to today. |
Resizable Windows, Font settings for input text elements, beginnings of Treeview ElementYou can stretch windows bigger now and some of the elements will resize with the window. ** The Input Text Elements did not have a functioning Font setting. Doh! Don't know how that got missed. The very beginnings of the Treeview element are in there. Hopefully nothing was broke. Any time I make changes to the core widget packing I get nervous! ** Had to turn off some of the Resizable windows features....Buttons and other elements were moving / expanding in forms that I didn't want the to expand. The change fucked up too many elements to leave on for now. |
Two new Demo programs - CPU Desktop Widget, Spinner Compound ElementAdded another Desktop Widget to the demos. This one shows the CPU utilization. The spinner allows you to change how often it's refreshed The Spinner Compound Element was done in response from a user wanting to see a different kind of spinner. This one has larger buttons and is laid out horizontally. The point of this demo is that it's possible to put together multiple Elements into a higher level element. There aren't many of these I can think of at the moment, but given how many user questions are asked, something else is bound to be asked for. |
Table Element, Complete rework of Popups, Death of MsgBoxYou can blame the Popup changes on this issue: All of the Popups were rewritten to use a long list of customization parameters. The base Popup function remained more or less the same. Decided while I was going all the Popup work that it's time to completely remove MsgBox. Sorry all you early adopters. You'll need to do a bulk rename and then you'll be fine. Table ElementsFinally have something to show in the form of tables. The element name is A Demo program is in the works. It's possible to add scrollbars to the Table element by simply placing it into a Column element. There's still work to do and a good number of bugs, but I encourage you to give it a try. If you do not put the Table Element inside of a Column, then you can still view and scroll the table, it just will not have scrollbars. There is a problem currently with keyboard input when placed into a Column. The keyboard keys work fine when NOT inside of the Column but stop working when placed inside a Column Element. This program will read a CSV file and display it in a window. It's another bit of PySimpleGUI "challenge code"..... The challenge is to do the same operation in another GUI framework in less lines of code. I would enjoy seeing the tkinter code required to create the window that this 20 line PySimpleGUI program creates. Most of the code deals with reading the CSV file |
Linux Virtual EnvironmentI finally installed VirtualBox and am running Ubuntu Linux. I tried to install the Mint distro, but the display was scrambled when it booted. I was surprised how close the Linux screen shots look to the Windows. Even Pong worked the first time. I don't believe that Python has been labelled the "go to language" for doing cross-platform GUI work. I guess I never stopped to think about it. I don't recall seeing this kind of thinking in posts or books I've read on Python. Perhaps it's time for that to change? |
3.2.0Released a new release to PyPI. Sorry about all these releases, but features continue to pour into the code. I'm finding even the folks that are actively using PySimpleGUI only run the pip installed version rather than the GitHub version. That means if I want runtime on the code, I'm only going to get any is to do a full release. There were a number of changes that could f-up, so be on the lookout. The biggest addition to 3.2.0 was the Table Element (beta quality at the moment). If you are running older programs then you may crash due to missing functions, MsgBox and several others. This is because I've moved 100% to Popup calls. It's not like I haven't been warning people so I don't expect complaints. Some people are calling Instead of calling The call sequence becomes this: You'll also find the Finalize call used in the scripts that use the Canvas Element. See the Readme for more info on what's in the release. Note that the readme has not yet been updated with the Table Element and several other changes. There's only so much I can do. |
One Line Progress MetersPySimpleGUI has always had a one-line progress meter called EasyProgressMeter. However, that function has a limitation of only 1 meter being active at a time. The new way to do Progress Meters is the function OneLineProgesssMeter. All of the documentation and examples will reflect this new function. Have to say it's nice to be able to run as many meters as desired without having to worry about more than 1 being on the screen at a time. I intend to remove EasyProgressMeter within the next 5 or 6 releases to PyPI. I tried to insert a warning in the code, but too much code was shared to fit the message in. I'm sorry about the change, but really would like to both add this function and rename the capability to something very descriptive. If there is enough revolt over removing EasyProgressMeter, I'll leave it in and simply drop it from all the documentation. |
3.3.0Yea, yea, it seems like only yesterday that version 3.2.0 was released. That's because it WAS only yesterday. I've been busy. There are 2 changes I wanted out quickly....
The Progress Meter feature alone is a great use of PySimpleGUI. A number of users are using it only for this purpose in their programs. |
GraphingNew demo program - graph ping using canvas. There is another ping-graph demo using Matplotlib. This graph only uses tkinter. Finally, because the pings take a long time, I moved the ping calls outside of the GUI event loop. Calling ping inside event loop was causing the GUI to respond sluggishly. This is because the ping was taking 1 second which means the gui wasn't being refreshed / wasn't responsive during the second. Now the GUI sleeps for 200 ms while the ping is done by a thread. This is yet another toe in the water with threading. The problems I saw in the past are no longer there, it would appear. I also checked in the ping.py file that you need for this demo. It's a pure python implementation of ping and works pretty well, even if slow. |
Progress MetersThanks to @JorjMcKie I've learned more about the performance of the EasyProgressMeter and thus probably the OneLineProgressMeter. The more arguments to display the longer it takes. Was going to document in the Cookbook / Readme that if you have performance concerns, you can call the progress meter less frequently. You don't have to update it 1 count at a time. It could be like this: This meter is only called every 5 times through the loop. It finished quite a bit quicker than the test updating the meter every single time. |
PySimpleGUI programs as an EXE file!The biggest thing to hit PySimpleGUI since Colors.... the ability to run programs written for PySimpleGUI as an exe file. ALL credit goes to @JorjMcKie for this. There is no need to distribute Python with your programs. It's all included in the exe and folder of supporting files. From what I understand of nuitka, this code is compiled C++ code, not python code. The performance is thus potentially better! It's the best of both worlds. Working to get the process documented. It's tricky and required a special script. Stay tuned.... |
Graph ElementThis one is pretty exciting as it does something new on the screen. The Graph Element allows you to easily create a canvas and draw on it using your own coordinate system. You don't need to do conversions from your graph coordinates to the tkinter canvas graph coordinates. The Demo program for it is a good example. It displays a pint graph. The graph we're creating is a line graph what we would like to to from 0,0 in the bottom left to 100, 500 in the upper right. This will give us 100 data points along the x axis and up to 500 ms on the y axis. After creating the Graph Element, we can do 3 operations on it:
The draw line draws a line from 1 point to another. The points are specified using your graph coordinates, not the tkinter canvas coordinates. I know I have a LOT of documentation to do. In the meantime, try using Control+P if you're using PyCharm. Press Control+P while you are typing in the parameters and you'll see a popup showing you what the legal parameters are. This feature is almost necessary when using PySimpleGUI because functions have SO many optional parameters. I hope to see some cool creations using the capability. I'm starting to see more and more projects pop up on GitHub that use PySimpleGUI! Keep those examples coming! And keep the requests for new features coming too. They have made this such a better package because of your help. Sample code: This is your layout: To draw a line, call DrawLine:
|
|
Let's keep the "Announcements Issue" open so that it remains visible to visitors to the project.... |
Wikipedia-Style Banner in the DocumentationI'm at a place in the PySimpleGUI project that I never dreamed I would be at, but sometimes the paths we choose don't lead to where we thought they would. Over the past 88 days, I've watched 5,400 companies and people from 291 universities using PySimpleGUI, a fraction of the actual number of users over that period. The number of users is growing at a rate I never thought it would ever hit despite not promoting the project any longer. As I see panels popping up at conferences about the "Sustainability of Open Source" I can offer a fantastic case study that even with an incredibly "successful" project, it's not possible for an individual to survive with this model. The FSF
mantra is a myth. "If it can be used for free, it will be" is the more accurate assessment based on the evidence I've seen over the past several years. These 291 Universities have student users that I'm sure have purchased video games in the past year or faculty members that can afford to toss the project $5 a month. But, they haven't. I hope the project is ultimately kept open, but have been preparing myself for its close. A number of friends have urged me to try the Wikipedia banner so that's what I'm giving a try. Commercialization has been on the table for a while and I've fought going down that road. It may be the only viable route for the project to survive. The coming weeks and months will determine the next steps. |
Thank you everyone!!The outpouring of support and words of encouragement have been amazing over the past several days. They're arriving at the perfect time. I've been working so hard to get this Udemy course done by Christmas and your messages and donations are making the long hours shorter. There have been so many unusual things about this project... it's the gratitude and kindness that have been the most shocking part. So many times users have said "thank you" when opening a GitHub issue.... or thanking Jason for his help. The emails I receive are overwhelming at times. It's hard to describe the soaring feeling of hearing that I've made a positive difference in someone's life. I'm so very very fortunate to have the kind of users that we have. I look around the internet and I don't see many other projects that are so lucky. Even on YouTube users leave kind comments, not the ugly ones that so often appear online. I'm not trying to get rich from this project. I'm simply wanting to be able to survive doing it. So many of you are stepping up to help make that possible. I wanted to take a moment and say how much I value, no, cherish, these messages and how impactful they are to me and the rest of the team. OK, I gotta get back to working! I want to announce this course as done by Christmas! |
Udemy ALMOST There.... WATCH for more later today!I've finally completed the Udemy course! There are 61 Lectures in the course totaling 11 hours 30 minutes. I'll post a message about it and a coupon too! THANK YOU for the support!The support so many of you are sending along with the course may rescue this project! I'm so excited that it may make it yet!! I've never seen a more grateful group of people for any project I've worked on. It's so touching to see that there are many grateful and positive people all over the world. I know how massively fortunate I am to be surrounded by thankful people. What a warm and wonderful holiday gift. |
Udemy tomorrow maybe!Hoping for a Christmas miracle and will be able to post a link tomorrow. The course almost made it through the review process. Only a small change was needed which means it could happen pretty quickly. Again thank you to everyone for the support. The kindness, gratitude, show of support that so many are expressing has been an incredible experience. Heartwarming words. Wishing for happiness and peace for everyone |
Udemy Course is now open and available!This is a coupon for 50% off: The normal link for the course is Thank you for everyone's patience during the past year. The first recording was completed on Dec 26th 2020. It's been a full year (minus 2 days) in the making. It wouldn't have been possible to do this without the help of Christian, Tanay, and Jason. |
The Treasure in ProgrammingSo much about programming is discussed that falls in the realm of "science" or technology. Very rarely are the emotions and softer parts of programming discussed. As I read the messages that have been pouring in... messages of gratitude & joy... I have been pondering what about all this that makes me feel the way that I do... the joyfulness of working on this project. Why am I rewarded with these feelings? I don't know why this diagram popped into my head this morning, but it did. Not sure what to call the red-shaded region, so I've named it The Treasure since it does feel valuable to me. It's not about skillNotice in the diagram there is no mention of technical skill, experience, or investment of time. Nothing about doing things right or wrong. Each category can be defined uniquely by you. That's the secret magic behind this. You can set it up so that this treasure is not only achievable but happens frequently. BeautyBeauty can be found in code itself. It can be in the user interface created. There is beautify in witnessing someone be successful. It's everywhere but sometimes has to be searched for. It's rarely far, but can be hidden. JoyJoy is for me a short-term experience and one that I'm highly aware of at the time. It can come from seeing something work for the first time. It often arrives quickly, sometimes unexpectedly. "OH! It ran!?" SatisfactionThis is the deeper, long-lasting part of "The Treasure". It's the part that sticks around. I truly do treasure this experience that you all are participating in. I'm fortunate to hear from so many grateful people. There is beauty I see daily. I get to share in your happiness, so thank you all for sharing and coming along for this journey of fun and discovery. |
The MessagesI read every paypal message, every email, every buy me a coffee comment... It's been SO helpful. They got me through the difficult part of getting the Udemy course done and they're lifting my spirits considerably. Your donations are helping and will help in the future! Those that are sending small amounts with an apology or explanation why it's not more need not worry about the size. They all add up. Every bit is helpful. You don't need to apologize, but I don't mind at all reading that you're being so incredibly generous by supporting the project despite not having a lot of wealth to draw from. They're touching stories. The BannerI will be changing the banner early in January. Like Wikipedia's banner, it wasn't meant to be something that remains up for forever. I genuinely wasn't sure when I posted it if the project was going to get financial support as a result of it. It was as much a "notice for users to prepare their projects for the impact of the project closing" as it was a "plea for help." I truly did not expect the response it generated. It's been yet another incredible experience that this project has given me. Rather than being upset and depressed about the future of PySimpleGUI, I'm again excited and much more hopeful. What's with the strange emotional posts like "The Treasure in Programming" above?It's a counter-balance. There is so much material posted, written, published about disciplined programming. Paradigms, Pythonic, extensibility, maintainability, refactoring, building-for-the-future, the one right way of writing a piece of code (see Zen of Python). Coming back to programming after being away from hands-on development has been somewhat of a shock. Coding standards, solid best practices, testability, maintainability were certainly serious topics throughout my career, but it feels extreme to me today. There's a level of seriousness and an almost militant tone that I've seen, even for the beginner programmer that doesn't want to pursue programming as a career. All this touchy-feely-emotional, fun as a goal part of PySimpleGUI is my attempt to shine a light on the other aspect of programming than the serious, approaching robotic way programming is taught.... the fun part... and that the fun part is a very very important part. Passion & IgnoranceThe "fun" can sometimes grow until it becomes "passion." I've said here dozens of times that I enjoy browsing GitHub repos and seeing the work of beginners. The reasons are:
Ignorance is a good thing sometimes. I don't mean stupidity... I mean uninformed. Not exposed to a deeper education. What I am looking for is someone that's "thinking outside the box", and, if you don't know any better, if you're ignorant on a topic, you don't even know a box exists. You're free to explore, experiment, and innovate. I love quotes and this one from Picasso (one of those "love the art, hate the artist" painters) I think embodies what I'm trying to explain:
It's this child-like passion, innocence, lack of knowing where the boundaries of "correct" are that I seek both personally and when looking through projects. PySimpleGUI was born from my ignorance of how GUIs "should work". I avoided them my entire career because of the pages of code involved. I was not only a complete beginner in Python but GUIs too when I wrote PySimpleGUI. That ignorance led to a new approach. Thank you for the InspirationPySimpleGUI users inspire me! I think that's what I'm also trying to say. You do it in your words, your code, and sharing with others what you make. I don't recall seeing any GitHub repo where a new programmer had the courage to share their creation and was then criticized in their Issues. Trust me.... you inspire when you share even the most simple of creations. Parting thought.... Screenshots in your readme!!A YouTube comment left earlier today reminded me of this trick.... This video teaches how to use GitHub Issues to store images: Be sure to include a screenshot of your GUI in your readme! You've done something highly unusual in the Python world... you created a GUI for your application. That means you can share a picture of it... humans |
Taking Some Time OffUdemy is done.... help is coming in to rescue the project... things feel a little more stable. I need to recharge my batteries for a tiny stretch as well as tend to life's mundane tasks that are required to simply exist today. To do this, I need to unplug, turn off, tune out, and take a break. It'll be good for everyone. The longest I see being away is through the end of the year, which is in 5 days. I again thank all of you for making this project one of the most incredible experiences of my life. It's been one of the most challenging too, but maybe the two are required to be present. Your kindness and generosity have been wonderfully overwhelming. I hope that others helping the project take a break as well. Everyone deserves a break, a period of reflection, rejuvenation, renewal. For me, much of my recharging comes from the fuel provided by all of you. Your kind words echo in my head frequently. It's a very positive message to replay. See you soon! |
2022 - Off to a great start!Down came the "banner of desperation" today. The response has been an overwhelming experience. The words of encouragement helped immensely! The donations and sponsorship paid the bills and combined with the Udemy course are going to perhaps keep this project running. I'm very hopeful feeling about the future despite not being able to predict it. Every Bit HelpsA number of users donated and included a note that was apologetic.... it was all they could afford. A $4 donation pays for the GitHub account for the month. There is nothing to be embarrassed about nor apologize for when you've donated and helped in any manner. I don't want to discourage telling me your stories, if your donation is difficult to make, or any other message you care to send. They're all read, re-read, written down, shared with team members. They're cherished, appreciated and really demonstrated what a remarkable group of users Sponsoring Other DevelopersNow that the PySimpleGUI project has sponsors and was able to pay the bills this past month, I felt like I can sponsor other developers that I look up to or inspire me. I'm thrilled to be able to give to other people also writing software. We're all doing the best we can with what we've got and it's really great to be able to help these other developers. "Pledge Drive"?Raising awareness of the funding problem certainly brought out a big response just as it does for Wikipedia. I'm wondering if this may be the way PySimpleGUI can continue to function in the long run. I don't want to keep focusing the financial piece all the time, so maybe a periodic drive would be a way to. The Udemy course may be the recurring income that can keep these kinds of events minimal. 75/25 TimeI'm splitting my time up between being back here in the GitHub Issues in an active way and releasing software for 3/4 the time. The other 25% is spent in adding to the Udemy course materials to help make it better. With Udemy being the only income source I would like the course to be as good as I can make it. Udemy makes it possible for code quizzes to be a part of the course but they don't support GUIs so I'm having to be a bit creative for that part. Mike Driscoll's Excel BookIn late November Mike Driscoll released his latest Python book titled:
You'll find it on Gumroad: And on Amazon: You can always find out the latest happenings with Mike's books on his blog located at: I got my copy via Kickstarter and it's an excellent book. EducationSpeaking of all this education.... I wanted to follow up on a post just before the holidays and make sure the right message was being sent. I wrote about "ignorance" and how it can be an advantage. The message was not that being ignorant is something to strive for or that not getting educated is a good thing. The point was that if you're still getting started and feel frustrated that you haven't learned as much as you would like, that a slightly different point of view may help. Your lack of knowledge doesn't have to be a negative thing and at times can be an advantage. Hopeful About 2022The outpouring of gratitude I've seen by PySimpleGUI users over the past month has had a big and positive impact. Thank you all so much for the help! I hope all of you have a fantastic 2022 and that the large number of people that struggled last year won't so much this year... that it's a better year for everyone. |
Pirated CourseA kind user just informed me of a copy of the PySimpleGUI Udemy course being offered for sale elsewhere. There's only 1 place at the moment to get the Udemy course, and that's on Udemy. The New BannerThis is what the top of the documentation (http://www.PySimpleGUI.org) now displays instead of the "help" banner. It's much more pleasant looking. |
Working on 4.56.0 release...The near-term work is to get the changes that have been piling up on GitHub released to PyPI. But first I want to address the 8.6.12 tooltip problem so that fix is in there. A scan through the issues may turn up other critical problems, but I also don't want to take too many changes. The goal is to get these changes that have been on GitHub for a while out to the wider user base. It's great to be back to the day-to-day project work. The background work of adding exercises to the course has been also happening this week. |
4.56.0 PySimpleGUI 5-Jan-2022The "It's been a minute" & "Welcome to 2022!" release
|
Python f-string / Formatting Cheat Sheetsf-strings are one of the most brilliant programming designs I've ever seen. They were definitely one of those "finally done right!" kinds of features. Being able to both write the text to be printed with the variables and expressions in-line with them has been an elusive problem that I had never felt happy about until I saw f-strings. The wonderful things about f-strings are the options they provide for formatting, in particular the date/time formatting. For the past few years, I've needed to search every time I take advantage of f-string formatting. I've never saved a link that I was happy with. Until this week... The wikipython.com site is filled with incredible cheat-sheet formatted Python goodness. I've mentioned them here before. These new ones that cover formatting are now built into my personal tools. I'm a button press away from this information and it saves a lot of time. This link is the webpage view: If you want to download a high resolution 600 dpi version, you can get it from John's GitHub page: The Toolbox Starting PointIf you're just starting with Python or looking for a place to start looking through the information available, the Toolbox page is a good way to start: https://www.wikipython.com/big-daddys-toolboxes/ He's got numerous reference pages including this subset - The Raspberry Pi GPIO information, many pages of tkinter material (SIXTEEN pages of densely packed, carefully formatted reference info), Data-On-Disk (Pathlib, CSV, JSON, pickle, etc) Opening Files Using PySimpleGUI - Tip of the day....These reference pages are so handy that I've added them to my desktop launcher. If you want to open a file using the standard program associated with that file then you only need to call For example, to open the formatting PDF I call the PySimpleGUI function sg.execute_command_subprocess(r'C:\Python\PDFs\PythonWikiFormatting.pdf')If you have extracted the images from the PDF and want to open the individual page, then instead of passing in the PDF filename, you would pass in the image filename: sg.execute_command_subprocess(r'C:\Python\PDFs\PythonWikiFormattingPage1.jpg') |
Course Piracy, Security, MalwareThe proliferation of pirated PySimpleGUI Udemy course videos continues to spread. My concern is less of piracy and one of security. Of course, piracy financially impacts all authors, but the person that has the most potential exposure is the user of these pirated materials. If you see sites like itlearndl.com offering the "Python GUIs – The Official PySimpleGUI Course" available for download, please understand that this is not a site affiliated with the PySimpleGUI project and that you may be exposed to malware as a result of downloading materials. This kind of thing will happen for any course, book, ebook, etc, so it's not surprising and I have no plans on constantly drawing attention to these sites. But since the course was released only 19 days ago, it seems reasonable to mention words of caution a couple of times. Cooking up some recipesI'm working on documentation and more materials for the Udemy course as mentioned earlier. The Push and VPush elements are the focus for the one I'm working today for the Cookbook. I hope everyone is having an awesome 2022 so far. I love what you're making and sharing! It's truly exciting to see so many creative projects. |
Hot Push, VPush Recipe in the Cookbook!Added a lengthy Recipe to the Cookbook that shows using the You'll find the new Recipe here: https://pysimplegui.readthedocs.io/en/latest/cookbook/#recipe-element-justification-and-alignment Here's a small sample of one of the example pieces of code. Multiple MonitorsAlso added the code that was released as a Demo Program some time ago. I use this tool to help determine the (x,y) location tkinter uses. Really handy if you want to locate something at a specific spot on the screen. Demo code is located here: https://github.com/PySimpleGUI/PySimpleGUI/blob/master/DemoPrograms/Demo_Window_Location_Finder.py |
New Emojis and Demo!With some luck, this announcement will work correctly... The PySimpleGUI Emojis have been a nice addition to the overall experience. I use them personally when communicating on all sorts of platforms, not just GitHub. I just added a new Demo Program that includes these new emojis. I've been using the demo for some time on my computer, but never posted it as an official demo until now. You can use it for your own custom emojis. Instructions are in the demo program on how to go about adding them. You'll find the Demo Program here: It pops up a window at the location of your cursor, you click an emoji, it's placed onto the clipboard, and then the window closes. At this point, you can paste your emoji into whatever program or webpage you want. I use PySimpleHotkey to control launching the toolbar. They're integrated into PySimpleGUI on GitHub and will be posted to PyPI in the next release. A huge thank you to @Snaiel (an awesome PySimpleGUI team member) for making these happen. He worked with an artist to get the original set made and we just got this second batch in this week. Hoping these add to the "Fun" goal of PySimpleGUI. |
New YouTube Video - The 2022 UpdateI added a new YouTube video yesterday that you'll find here: The purpose of the video is to inform visitors to the PySimpleGUI YouTube channel that the "PySimpleGUI 2020" videos that are there now represent a snapshot of PySimpleGUI capabilities as of 2020 and that development has continued for the years following those videos. There have been 3 different YouTube video lessons
The new 61 lesson Udemy course is the 4th video course I've recorded for PySimpleGUI and covers the features that were added after May 2020 when the YouTube videos were recorded. A lot has happened in those couple of years and wanted to have something posted in the channel that reflected this as well as where to get the latest documentation, tools like the Demo Browser, and that the Udemy course is now available. One of my favorite parts of that video was scrolling through issue 10, the User Screenshots. It's so much fun to see what users are creating. I'm working on a new feature that will make sharing screenshots easier. It's still early in the development process. |
Spotlighted User @DuesAres...It's infrequent but I've pointed out interesting projects on occasion. Issue #10 I eagerly read posts right away. Sometimes I look through repos that GitHub reports on the main page: I find myself frequently requesting an upload of a screenshot so visitors can immediately see what they've created. Sorry if you've been a recipient of one of these requests. I don't mean to create more work for you. Of course, users that file issues are of interest. One such user recently was @DeusAres. He envisioned flat, rounded corner buttons that highlighted when they're moused over. That's exactly what he created. This is a fantastic example of doing whatever is required in order to make a GUI that's attractive and follows a design theme that's different than the default. Beautiful in a non-default way doesn't just happen. Sometimes it takes a little work, but it's possible. Can't help but have respect and admiration for @DeusAresfor putting in the time and effort. |
Beginners, again....I love quotes. Circling back to a post a while back where I've been fumbling around about being ignorant is sometimes a good thing, and then trying to explain what that meant. This quote are the words I was looking for. [EDIT] - The image may not come through email.... it reads: 'In the beginner's mind, there are many possibilities, but in the expert's mind there are few.' |
New Coupon Code...Not having created a Udemy course in the past, I didn't know their coupon codes were, well, kinda weird. Here's a new coupon good for the same discount as the previous. However, unlike the last one that was good for 30 days, this one is only good for 5 days. I'm not able to re-use older codes and they have unusual restrictions on what the amount can be set to. They wanted me to change an additional $39 more if I wanted a coupon good for 30 days like the previous coupon. The documentation and the PySimpleGUI code have been updated with the new coupon code. I'll keep trying every day to set up a longer-term coupon and see if they end up letting one go through. THANK YOU Students, Sponsors, Donors!!I so very very very very very very much appreciate users that are signing up for the course! The Udemy Students, GitHub sponsors, and ButMeACoffee Donors are literally keeping PySimpleGUI alive.... making it possible for me to continue to work on this project by helping to cover the expenses. I'm grateful for your help and fortunate to have such kind users that say encouraging words that keep me motivated to push forward. |
Readme ScreenshotsI've mentioned them here before, but looking back I don't see where I pointed out that there's a Cookbook Recipe describing ways to add screenshots to your readme files in your GitHub repo (or any markdown document). https://pysimplegui.readthedocs.io/en/latest/cookbook/#recipe-post-your-screen-shots-please I'm working on a Gallery feature that will hopefully help in numerous ways. More info in the not too distant future. GIFsIf you want to add a GIF to your readme, then you may be interested in a free tool called ShareX that creates GIFs that are quite compact. I've been amazed at being able to get multiple seconds of a large screen in a few MBs and for smaller moving images they're often in 100's of K. Take a look... you may like it... It's what I use to make all of the GIFs you'll find associated with this project. This one if from the readme: |
Tip - Getting
|
Tip -
|
|
|
Demo Program Monday!!Just finished posting a new pip installable version of all of the demo programs and the Demo Program Browser! What's the big deal, you might ask? Well... it makes installing and using the Demo Programs and the Demo Program Browser much easier.
|
|

































































Announcements - New Features, Design Patterns, and Methods
I'm unsure how GitHub sends out updates. I don't think people are informed about Wiki changes for example. I've been announcing new features and more importantly, new ways of doing things, on the Wiki. I'm going to put announcements here so they are more visible. If there are objections about the traffic, well, what can I say, it's a busy/active project.
The text was updated successfully, but these errors were encountered: