Click here to Skip to main content
15,886,258 members
Please Sign up or sign in to vote.
3.00/5 (1 vote)
See more:
i am a senior programmer on C# and java over windows

i want to make gui programs to work over linux

i know that java do this but i want another language that make gui too to be learned

some people ask me to learn python. is python can make gui easily ? and what is the program that i can compile it using, like VS 2010 for c#
Posted
Comments
Sergey Alexandrovich Kryukov 21-Sep-12 14:36pm    
You can certainly do development using all of the languages you mentioned (I would add Free Pascal, especially close to you if you understand .NET well), but my advise might be better; and it might surprise you: use C#.
--SA
amir tarek 21-Sep-12 14:57pm    
how to use C# on linux?
and how pascal near .Net? i think pascal as i studied it before is lower than C
Sergey Alexandrovich Kryukov 21-Sep-12 15:05pm    
Pascal is not lower, God forbid! And Object Pascal is OOP like .NET, more powerful in some aspects. Never heard of Delphi? This is a direct .NET predecessor.

But I'm talking about multi-platform Free Pascal. Same story: you can write one code, execute on different platforms (but with recompilation). It's not for .NET or Mono (not for CLI), its for native platforms where it is implemented. Very good thing (please see my comment about Double Commander below.)

About C# on Linux -- I answered in full in my solution 1. Please see. (And please accept it formally, "green button".) For you, it might be the best. And it's available for Linux for a long time already, how could you miss this information?

--SA
amir tarek 21-Sep-12 15:13pm    
mmmmmmmmm no i never heard about Delphi i will see it

i will read your answer and see these links

thank you for interest
pasztorpisti 21-Sep-12 14:57pm    
If freepascal is an option I would mention Lazarus "the crossplatform delphi". That is also a nice option if its about rapid gui development.

If you have some experience with C#, I would recommend the following: develop your application on Windows for Microsoft.NET. Use System.Windows.Forms (not WPF, not Metro). If your application does not use any Windows-specific code (like direct manipulation with Windows messages), no P/Invoke, and is in general confined to the standards (Form is itself a non-standard library, but you can use it, you can also use ADO.NET and something else, but most of the code should be based on standard CLI BCL, http://en.wikipedia.org/wiki/Base_Class_Library[^]), you can run such application on Linux without re-compilation!

How? Well, with Mono:
http://en.wikipedia.org/wiki/Mono_%28software%29[^],
http://www.mono-project.com/Main_Page[^].

I usually do it in three steps: 1) develop or update code using Visual Studio on Windows; 2) test it under Mono on Window; 3) test it on Linux or other platform under Mono.

[EDIT #1]

If you need to develop it in Linux, the available IDE is MonoDevelop:
http://en.wikipedia.org/wiki/MonoDevelop[^],
http://monodevelop.com/[^].

It is available on Linux, and also on Windows and other platforms. On Windows, you can also use #develop:
http://en.wikipedia.org/wiki/SharpDevelop[^],
http://www.icsharpcode.net/[^].

What's good about this one? You can use it to develop UI with a different library, GTK#, which is also multi-platform and has better compatibility of different platforms. Naturally, it is based on GTK, also available for all these platforms:
http://en.wikipedia.org/wiki/GTKSharp[^],
http://www.mono-project.com/GtkSharp[^],
http://en.wikipedia.org/wiki/GTK%2B[^],
http://www.gtk.org/[^].

[END EDIT #1]

Mono is available for a number of platforms: Windows, Linux, Mac OS X, iOS, Android and more.

[EDIT #2]

By the way, see Solution 2 about Qt. Not only this is another multi-platform UI library, mostly for C++, but it is also comes CLI-wrapped (or a port, I'm not sure), so you also can use it with Mono on both Windows and Linux (and other platforms).

Please see the available bindings here:
http://en.wikipedia.org/wiki/Qt_%28framework%29[^].

Look at the Mono UI toolkits in general:
http://www.mono-project.com/Gui_Toolkits[^].

You will be fine on Linux, don't worry… :-)

[END EDIT #2]

—SA
 
Share this answer
 
v6
Comments
pasztorpisti 21-Sep-12 14:45pm    
5ed, this is definitely the way to go because of the tooling.
Sergey Alexandrovich Kryukov 21-Sep-12 14:46pm    
Thank you.
--SA
amir tarek 21-Sep-12 15:19pm    
mmmmmmmmmmm is this really? with this mono or monodevelop i can develop programs for linux using c#? this is great i will try this
Sergey Alexandrovich Kryukov 21-Sep-12 15:30pm    
Absolutely real. Actually, most of the applications I write on Windows do run on my Linux boxes. Without any extra effort. Without recompilation. You only need Mono, not MonoDevelop (which you might need only if you don't want to develop on Windows).
You only should be careful to avoid anything platform-specific.
--SA
[In response to Python discussion in the comments to the question:]

Python could be considered as another alternative for UI development (except for Web development) on Linux. Please look at the set of UI toolkits you could use:
http://en.wikibooks.org/wiki/Python_Programming/GUI_Programming[^].

Just in case, on Web development see also:
http://docs.python.org/library/wsgiref.html[^].

[EDIT]

As you actually can use IronPython on Mono, it can also be used to develop Linux applications to run under Mono:
http://en.wikipedia.org/wiki/IronPython[^],
http://www.mono-project.com/Python[^],
http://ironpython.codeplex.com/wikipage?title=IronPython%20on%20Mono[^].

By the way, all CLI applications on Mono are started with the command line like
mono MyApplication.exe


—SA
 
Share this answer
 
v4
Comments
pasztorpisti 21-Sep-12 15:30pm    
+5, All my python gui programming consists of popping up a yes/no messagebox from an installer script with PyQt, lets consider that a proof of concept! :-)
Sergey Alexandrovich Kryukov 21-Sep-12 16:12pm    
Thank you very much. Well, I would agree to consider it to be a proof of concept. :-)
--SA
Sergey Alexandrovich Kryukov 21-Sep-12 20:00pm    
By the way, documentation confirms that IronPython can be used on Mono to do CLI programming on all platforms where Mono is available. I added the references to an updated answer, after [EDIT].
--SA
pasztorpisti 21-Sep-12 20:20pm    
This makes an otherwise crossplatform language even more crossplatform and the access to .Net libraries can also come handy.
Sergey Alexandrovich Kryukov 21-Sep-12 20:40pm    
Aha, "it's getting crossplatformier and crossplatformier..." :-)
--SA
http://qt.digia.com/product/[^]


If you know C++ you can try Qt framework
it provide all gui kits with the c++ framework


check http://en.wikipedia.org/wiki/Qt_(framework)[^]

http://qt-project.org/downloads[^]
 
Share this answer
 
Comments
Sergey Alexandrovich Kryukov 21-Sep-12 15:33pm    
Of course, but it could be harder for OP. Anyway, I voted 5.

However, Qt is also available for CLI, .NET and Mono, so it also can be developed using C#. Please see my answer.
--SA
Sergey Alexandrovich Kryukov 21-Sep-12 16:07pm    
So, please see my answer and the update, [EDIT #2].
--SA

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900