Guys, could you recommend a program for a beginner to create a windows app. I'm thinking their is bound to be a simple and intuitive way of doing this.
windows application
Microsoft have a free version of Visual Studio.
Embarcadero (the successor to Borland) have free "Starter" editions of their Delphi and C++ Builder tools: https://www.embarcadero.com/free-tools
There are also open-source GCC-based things - I'm sure someone will be along with the details soon ...
EDIT
Of course, for plain command-line stuff, there's Python.
There are also various "Frameworks" that can be used to build GUI apps with Python; eg, wxGlade: http://wxglade.sourceforge.net/
Depends very much of a lot of things:
- Previous experience
- Functionality, complexity and size of planned application
etc..
If you tell us more about what capabilities you require the recommendations will likely be more "precise".
You will get different recommendations from different people. (Chances are it will turn slightly "war'ish".)
Here's mine: C# .Net with Windows Forms for the UI developed in free edition of MS Visual Studio ("Visual Studio, Community Edition"). Version depends on what version of Windows you're running.
I'm thinking their is bound to be a simple and intuitive way of doing this.
Again, depending on previous experience, this might be so. Or not..
Applications with a "mode-less" graphical UI are have certain aspects that are not seen in "classical prompt/response" applications.
OTOH, you will see some similarities with embedded applications. Any UI activity from the user generates "events" that are routed to different "event handlers".
Example:
If handling an event takes a long time, the UI will freeze - unless you push the handling off to a separate "worker thread". Application can keep on running the UI, but will have to react on the state of the worker thread in some way.
Sounds similar to interrupts and interrupt handlers in an embedded application? In a sense it is.
How much of these things you need to handle explicitly depends on chosen environment.
I have a feeling that your application will need to communicate over TCP/IP.. ;-) Correct?
Basically, I wan to connect a AVR32 to application that will then display the said information in boxes and and wee lights ect ect
The information will be sent using TCP
Xojo is a language and IDE that is BASIC-like in syntax. Pretty easy. It is a bit on the expensive side for all the features (compile native apps for all major operating systems, data bases, and such) BUT, for free, you can create an app on any of those OS's and run it in debug mode. All the windows, dialogs, controls, and such, look "right" because they are native. There are single OS versions with limited additional features (no database, for example) that are less expensive. This is, in all senses of the word, a "professional" development system; it has been used to create quite a few commercial applications (medial records systems, movie editing, communications, and more) though it tends to be pretty invisible.
You can also create apps in Python. I know that the GUI situation has improved significantly since I used it - it used to be UGLY. It is free in the conventional sense. In my experience, Python has a significantly steeper learning curve than Xojo.
Both have tcp/ip interfaces.
Jim
Well, .Net supports "sockets" communication. (See e.g. this .)
Disclaimer: I've not used .Net sockets (or at least can't recall ever using it) but have used other TCP/IP APIs. Glancing over the class documentation it looks like a fairly straight-forward socket class.
There's also a TcpListener class, and the documentation page shows one straight-forward example of usage.
I suggest you want for some other recommendations also - I suspect that others here also have experience with writing Windows applications, and maybe started from a spot similar to yours (I've been writing Windows software for roughly 25 years).
But ... if you're interested in C#/.Net then start having a look around the documentation, and search out some beginner tutorials. Filter hard - the subject is vast!
Any development suite designed for making a GUI and or run on a PC is going to have a multitude of libs for all kind of stuff including TCP/IP.
With what languages do you have any experience?
If you know some Python then TkInter might be the thing for you.
http://effbot.org/tkinterbook/tk...
A long time ago I used the Borland C++ builder (20+ years ago probably...)
I very much liked the intuitive way of designing the GUI just by dragging things like buttons and check boxes onto the canvas of the program.
My dislike for microsoft is still strong even after all those years.
Part of a school project was to rewrite a FTP server program just to make it compatible with microsoft stuff.
Microsoft could not be bothered to adhere to any standard. Instead they made a point of not being compatible. It was part of their fudge campaing back then. I still hate them for that.
Qt seems to be a nice ide and they also have GUI design stuff.
Qt also has a dual liscensing scheme. They give (almost) everything away for free for personal use and open source projects. If you use it for commercial projects they want a piece of the pie.
Any development suite designed for making a GUI and or run on a PC is going to have a multitude of libs for all kind of stuff including TCP/IP.
Indeed.
TCP/IP (and higher protocols like HTTP) have been pretty much de rigueur for any PC app for the last few decades.
designing the GUI just by dragging things like buttons and check boxes onto the canvas of the program.
Again, that has been pretty much de rigueur for any PC GUI development for the last few decades.
Qt seems to be a nice ide and they also have GUI design stuff. Qt also has a dual liscensing scheme. They give (almost) everything away for free for personal use and open source projects. If you use it for commercial projects they want a piece of the pie. https://www.qt.io/download
I recommend Qt too. It's fairly easy and comes with modules for pretty much anything, like Serial interface, TCP/IP, HTTP, ...
But somehow they screwed up their download site. Or i'm just too stupid to find the damn button. Here's a link that actually leads to the installer downloads: http://download.qt.io/community_...
Basically, I wan to connect a AVR32 to application that will then display the said information in boxes and and wee lights ect ect
Personally I'd just use Python for such things these days.
Any progress, fianawarrior?
Personally I'd just use Python for such things these days.
Using PyQt?
Or TkInter?
Or WxPython?
Or ...?
Personally I'd just use Python for such things these days.
and then you wouldn't be stuck with having to use a Windows PC to run it on - it'd work on a Raspberry Pi, a Linux box, etc, etxc, ...
Apparently you can also use Python as a script language in Libreoffice.
https://duckduckgo.com/html?q=li...
This way you should be able to put your data almost directly into a spreadsheet and draw graphs from that with minimal programming.
clawson wrote:
Personally I'd just use Python for such things these days.
Using PyQt?
Or TkInter?
Or WxPython?
Or ...?
Hey Cliff! In case I was misunderstood: I am genuinely interested in your advice/recommendation re UI "framework" for Python. I might want to experiment a little with this, but surveying (at least) three alternatives is a bit over the top with the backlog of hobby-activities I have ATM. (-:
I had a quick glance at a tutorial for WxPython and it looks interesting, but if you have some valuable advice on choice of "framework" then please spill your wisdom over us!
TBH, I found wxPython to be rather clunky.
It seemed all to easy to mess up the design in the GUI editor, and the only way to recover would be to manually hack the XML file.
But it was what the Client was using ...
I'm still in the throes of death so not thinking very straight but for UI in Python I just stick to tcl/tkinter because it's part of the standard installations so I can give you a 10 line Python program with UI and I know it's just going to run and work on everyone's PC without needing to pip/install anything special.
Thanks Andy!
For "simple" applications (one window, a few (10 or max 20) widgets) is it feasible to "do it all in code" without any fancy "UI editor"? That's how the tutorial I found did it..
Sorry - it's wxGlade that's the graphical GUI builder (no, that's not a tautology!)
I guess if you're the kind of masochist that likes designing & describing graphical things in text, then it must be possible ...
Do you like to do all your schematics in netlist form ... ?
I just put the code (copy below) from: Simplest Web Browser in Python & Tkinter – 32 lines of code
...
in a text file, saved it as asdf.py, made it executable and executed it with: "python3 asdf.py"
And it "works". It starts a GUI. I can enter an URL in a entry box, click on "Go" and the text of some remote website in the text area.
Pretty impressive for a hand full of code.
#!/usr/bin/python3 from tkinter import * import urllib.request def go(): text.delete(1.0, END) with urllib.request.urlopen(entry.get()) as response: received_html = response.read() text.insert(1.0, received_html) browser_window = Tk() browser_window.title('knowpapa browser') label = Label(browser_window, text= 'Enter URL:') entry = Entry(browser_window) entry.insert(END, "http://knowpapa.com") button = Button(browser_window, text='Go', command = go) text = Text(browser_window) label.pack(side=TOP) entry.pack(side=TOP) button.pack(side=TOP) text.pack(side= TOP) browser_window.mainloop()
Upto this level xwWidgets seems to look quite like tkInter.
Managing a handfull of widgets in code also does not seem a big problem to me (Although I haven't done it).
But avoid the magic numbers. Define some constants for coordinates and size if you want to line up some check boxes.
OK and thanks, Cliff!
Define some constants for coordinates and size if you want to line up some check boxes.
This is where the graphical GUI designers really come into their own: you don't have to manually mess about with coordinates - they let let you specify how things align, what "sticks" to what, how they "strectch" when the window is resized, etc, etc, ...
You can use Lazarus RAD IDE to build cross platform GUI and console applications. It is very easy.
http://wiki.freepascal.org/Ardui...
https://bigdanzblog.wordpress.co...
@Fianawarrior: I'm curious: Did you get any further on this? I'm interested in any experiences with environments I've not used..
have not really had look yet mate, did have a peep at Lazurus though, crap ;)
I'm interested in any experiences with environments I've not used..
https://www.avrfreaks.net/comment...
It generated this:
The development environment I prefer for Python is PyCharm from JetBrains:
That is "free" for personal use.
The development environment I prefer for Python is PyCharm from Jet Brains
This: https://www.jetbrains.com/ ?
Purely out of interest, could you say what you find "preferable" about this?
Any downsides?
Jave you also tried it for C and/or C++ ?
Purely out of interest, could you say what you find "preferable" about this?
I did a wee bit of Python half a year ago, and took the recommendation from Cliff to try out PyCharm. Here are the votes from the Swedish jury:
- High quality, stable
- Very good adoption to Python (not just a generic IDE with Python half-arsedly tacked onto it).
- A lot of high end-functionality when it comes to "helping the coder" (auto-completion, "code suggestions" etc). If you don't like/want this then PyCharm isn't for you.
- Good debugging functionality
On the downside
- "Big UI", cluttered. I did not work with it long enough to see how much it could be tweaked - so this might be a somewhat unfair point.
I've heard and seen enough about the good things from JetBrains to consider buying a license - and then probably the "everything" license that gets me their C/C++ IDE, their C# fix-up'er, SQL module etc.. The prices where just a wee bit to prohibitive for me as a privateer to just take the jump. But it's still "on the trampoline.."
Some of the things I like about Pycharm:
1) it "style checks" as you go (though if that irritates you it can be disabled) so it polices things like indents, spacing around operators and nice stuff like that
2) the debugger is insanely easy to use. Literally just "Run-Debug xxx" and off you go and it's far better at "watching" things that any C IDEI have used
3) there's regular updates and again they "just work"
4) It (like Python) is multi-platform so whether I use Windows or Linux the Pycharm versions behave almost identically (apart from the obvious system differences between Windows and Linux)
And, yes, while they have a dev environment for C/C++ I have never actually looked at that as I tend to be a bit "dyed in the wool" when it comes to C/C++ using Eclipse on Linux and Visual Studio on Windows.
did have a peep at Lazurus though, crap
Details?
@Johan:
Lazarus is open source fork? / variant of an IDE which is based on Delphi / FreePascal.
It's some ancient language that almost nobody uses.
Their "general" forum has managed to score 6 posts yesterday (a 14 hour period).
http://forum.lazarus.freepascal....
The project is still active though. With a new release in 2017-12.
https://en.wikipedia.org/wiki/La...(IDE)
I guess the IDE / language is pretty usable, but who wants to learn Pascal?
A long time ago I wrote some applications with the Borland C Builder, which had about the same IDE as Delphi back then.
I found the integrated GUI designer very intuitive to use and well integrated with the code editor. That was over 20 years ago though.
I still have fond memories of the good old C++ Builder. I'd probably be using Lazarus if it could compile into C++.
My first "formally taught" language was Pascal (at university). It was actually a good language to learn first because of structured programming, strong types and so on. So to answer "who wants to learn Pascal?" well I'm one ;-)
.
Of course just as Dartmouth BASIC became unrecognizable in later variants like Visual Basic the Pascals of today bear little resemblance to Wirth's original.
My first "formally taught" language was ICL 1903 BASIC - for 'O' Level Computer Studies.
Followed by Pascal at Uni.
It was actually a good language to learn first
and so it should be - as it started out as a teaching language (as did Dartmouth BASIC).
I also learned Pascal as my first language in college.
Haven't used it since then.
As this topic has migrated from its original intent...
My first (computer) language was FORTRAN, in high school.
If we discount 6502 assembly language then my first language was PL/M.
Well, 1rst learnt Fortran 66,
then read about Pascal (and wanted it...) , then leant asm at school ... keeping using Fortran 66;
in the early years: used Turbo Pascal and a dedicated infra-PLM...
then, C (Turbo Pascal was getting too dependant on a given society: if it went bankrupt?)
and Fortran 77 / 90 (began being structured, accepting and handling long variable names ...) .
Taught myself BASIC.
Taught myself 6809 assembly.
Took FORTRAN in high school (avoided COBOL).
Took Pascal and Ada at uni.
Took a major career detour.
New career detour converged onto abandoned career.
Taught myself C.
Taught myself AVR assembly.
Living the dream ;-)
I also learned Pascal as my first language in college. Haven't used it since then.
"everybody" learns Pascal at school, "nobody" uses it in the real world.
When I was young I learned myself C, tried to bite off too much with C++ (partly because english is not my native language and C++ books were in English).
Learned a bit of TurboPascal at school.
If I remember well you cold not assign a float to a int or vice versa, it just wasn't in the language.
Nowhere in the whole program wer dots used (maybe inside floats), but you had to use one on the last line of your program or it would not run.
Such horrible artificial constructs with no real world value.
I was a relief when that class was over and I went back to C (and later C++).
I never ever did anything with Pascal again. Still hate it.
Sometimes my feelings are unreasonably strong.
I guess the IDE / language is pretty usable, but who wants to learn Pascal?
I can't answer that question.
Had you asked "Do you know Pascal?" I could have given an answer.
Uh uh. I know what you're thinking. "Does he know Pascal or not?" Well to tell you the truth in all this excitement I kinda lost track myself. But being that I studied at Uni around 1980, and Pascal was the new up'n'coming language - not to mention Turbo Pascal had a decent "market share" for DOS programs for the following 5 or 10 years - you've gotta ask yourself one question: "Do I feel lucky?" Well, do ya, Paul?
I hope you take no offense, Paul! That was just to fun and tempting to be able to resist..
No, a Pascal of today is likely not the same as VAX Pascal (adhering fairly well to "Wirth Standard") or Turbo Pascal (a decent amount of extra "bling"), but I taught Pascal for a number of years. Between 5 and 10 years, depending on how you define "teaching". And it's a "structured, block-oriented, strong-typed language (with strong separate compilation features, if we're talking Turbo)". Not the first such I've seen. Not the second. I' think I'll manage. ;-)
If an option for throwing together some simple GUI app is to revive Pascal, I'll might consider it if Lazarus is good enough. So, since Fianawarrior had a look at Lazarus I thought it would be really interesting to know how he had fared. Especially since he is not "tainted" by some previous environment for doing Windows apps.
And thus, Fianawarrior, I am still interested in any experiences you had.
It's not that I don't want to dig in myself. But if someone is testing something in this jungle it would make sense to share experiences. There are sooo many alternatives out there.. Here's what I can think of, right now, off the top of my head. No special order, just vomiting:
- Lazarus
- Java/Groovy with SWT
- Java/Groovy with AWT
- Griffon (think Grails, but for "Hosted GUI apps" rather than Web Apps/services
- C# with Windows Forms (a .Net framework for GUIs)
- VB.Net with Windows Forms
- WxWidgets in combination C++
- Python/PyQt
- Python/TkInter
- Python/WxPython
- Pearl probably has at least some options similar to Python
- Ruby probably has at least some options similar to Python
- Tcl/Tk
- Xojo (mentioned by Jim (west coast) above)
and certainly many, many more.. And I didn't mention things like Microsoft WPF (because it's not "easy" in the sense sought after in this thread).
No Offence. Cool.
You forgot "Qt" in the list. "Qt" is quite a collection of stuff.
Qt Creator is anIDE for writing cross platform C++ applications from everything from embedded applications to Widows / Apples / Linux / HTML5 / Android & more...
I use Qt Creator as an IDE for AVR's and use external makefiles for AVR-GCC.
But I've hardly scratched the surface of what you can do with (the open source version of) Qt.
It seems very powerful and has been traditionally the got-to application development environment for KDE.
All this power and flexibility is a bit confusing for me though. I've never realy tried to write a GUI application for my Linux box with it.
If you're happy with Pascal then Lazarus might be a good option.
If it's as easy as the GCC Builder from the 90's then you'll have dragged a GUI application together in your first half hour.
Below is a link to a youtube to give you an idea of how easy it is to drag a gui together in Lazarus:
https://www.youtube.com/watch?v=...
OK, I viewed that video, and peeked into ones that follows. Seems pretty standard, reminiscent of e.g. C# and Windows Forms, or Java and SWT (in a decent IDE).
Just one note, on Simple calculator part 3. In there the presenter codes
if RadioButtonAdd.Checked = True then LabelAnswer.Caption := ...
*Handing that Pascal code in to me circa 1980 would have had him mildly flunked.
Pascal is a langiuage with a "strong and clean" Boolean type. The if-statement requires an expression that is of type Boolean after the "if". The Checked method of a RadioButton onviously returns a Boolean. So..
The
= True
is un-necessary, a tautology and serves no meaningful purpose. Of-course he should have coded
if RadioButtonAdd.Checked then LabelAnswer.Caption := ...
As I said, very much like some other often used environments. Nice thing compared to C#/WinForms is that it (allegedly) supports several platforms. (Now, will that require separate builds or not? I.e. Does it generate OS-native code or does it run on a virtual platform like Java and .Net stuff?)
Might just d/l it eventually and try it out. Other things in the pipe that needs attention first.
And I'm still (genuinely!) interested in hearing from Fianawarrior what he found crapp'ish.
As I said before, I don't use Pascal.
Maybe send Fiona a personal message?
Edit: Duh, I forgot he started this thread...
Oh, I've had a three-digit number of students doing that horrid thing, and it was a long time since me teaching. I'll let him pass.. ;-)
The mistake/ugliness/stench is similar to what we often see here when testing for a bit set in C:
if ((someValue & (1<<bitNumber)) != 0) ...
when this would suffice
if (someValue & (1<<bitNumber) ) ...
Now, will that require separate builds or not?
It requires separate builds (under GNUlinux, is linked with X, at least).
"everybody" learns Pascal at school, "nobody" uses it in the real world.
In colleges these days I think it's Java they tend to teach now? It probably achieves much the same. It's the techniques not so much as the syntax that give you a basis for anything else you go on to do. College is supposed to be a lot like this - not so much teaching you the exact thing but the concepts and techniques that are more generally useful (in pretty much every procedural language there is some concept of iterative (for) loops for example).
Has anyone had a play with Microsofts Universal Windows Apps?
Not easy to learn but is quite powerful. MVVM, Binding, XAML, XAML Templates, ObservableCollections etc allow you to make some quite complicated realtime apps with little effort(Once you figure it out).
Compiles for IOT(Rasp PI) and XBOX as well.
Very different to conventional forms programming but interesting
Thanks Johan,
This was a very rewarding link. Thank you.
Hi, dbrion 0606,
Nice to hear from you.
Reading your posting I thought about my own work in IT.
I started on a PDP11, than a Honeywell box, than came PC's. Learned ADA, Assembler, C, C++, Cobol, Fortran.
Today ADA is no longer mentionend, and Fortran freelance assignments in the UK have disappeared.
In 1980 we still wrote a large mainframe accountancy package in Fortran on e DEC box, now even DEC is
gone. Is Europe turning into an "Industrial wasteland", no more research, no more number crunching ?
hanks Johan, This was a very rewarding link.
Curious: I have posted three links in this thread (upon a quick glance) - to a Lazarus tutorial and two links to ,Net documentation. Which one are you referring to?
I can also report that I had a half-hour stint with two attempts at installing Lazarus on Linux (Mint 18) a few evenings ago. Both failed with protests about stuff missing. Installing from the distro repo (e.g. using apt, Synaptic..) seemed to end quite bad. Installing the three .deb packages from Lazarus web site also failed.
Sorry, no details. Abandoned, and didn't investigate further. Lack of time.
I'd be interested in hearing from anyone having installed Lazarus with success on a recent Linux in the "Debian family".
I believe that was in reference to the tutorial you linked to in #18 (as indicated by the "(Reply to #18)" in the post header (#48).
Uh. I always miss those "in reply to"...
“Reminiscent of C#”! You should check the heritage. Turbo pascal, Delphi then C# are the work of Anders Hejlsberg.
Delphi, like turbo pascal was a stunningly great tool for its time. It had the advantage of compiling down to one executable which was great if you wanted an app to fit onto a floppy. C# basically adopted a similar object model with a c like syntax and a whole lot of extra stuff. Note - my experience with Delphi stopped at Delphi 6.
I did get Lazarus going to a degree on the Mac. The installation is a bit clunky.
awneil wrote:
and then you wouldn't be stuck with having to use a Windows PC to run it on - it'd work on a Raspberry Pi, a Linux box, etc, etxc, ...
Visual Studio UWP works on Raspberry PI, XBOX, PC, Windows Phone, etc...
And you can program it using C#, C++, VB, etc... All binary compatable thanks to CLR(Common Language Runtime)
Plus many modern features like XAML, MVVM, Async functions, etc...
I have used the free B4J from Anywhere Software. It works on many boxes, windows, linux,mac,rpi. They also have b4a for android, b4i for ios, and b4r for arduino. Yes , it is similar to vb6, but much improved, integrated ide with debugging, visual designer. Great libraries, and forum support.
Here is link for chart tutorial: https://www.b4x.com/android/forum/threads/android-charts-framework.8260/
Has anyone had a play with Microsofts Universal Windows Apps?
Microsoft Docs
UWP app developer
Intro to the Universal Windows Platform
10/27/2017
https://docs.microsoft.com/en-us/windows/uwp/get-started/universal-application-platform-guide
Google Developers
Web
Progressive Web Apps
both due to
Universal Windows Programs (“Metro apps”) aren’t dead yet, but there’s a better alternative on the horizon @ AskWoody
February 6th, 2018
Microsoft just announced that it’s going to start building Progressive Web App support into Edge and Win10.
...
It now looks to me as if there’s going to be a headlong dash into developing PWAs — and that UWP’s days are numbered. Time will tell.
...
MDN
App Center
Progressive web apps
Edits: link target, MDN