技术解析

不懂就问: Java & Python 开发 Linux GUI 程序
0
2021-06-18 21:31:59
idczone

需求:

开发一个 Linux 下 GUI 程序,要能按钮实现启动 Oracle,启动 ETL,查看 Oracle 的 status,关闭 Oracle。

背景:

不要跟我说命令多么简单或者 shell 开机自动启动脚本多么容易,这些我都知道。现在就是我们部门有一台自己的服务器,搭建的 APEX 报表,之前一直是我维护,关闭,重启之类的。现在我转调以后,就基本没人会了。有时候重启都很棘手。所以领导要求开发一个桌面应用,Linux 的 GUI 程序,要一个傻瓜式的操作,点击一个启动 Oracle按钮,就能自动启动之类的。

我的想法:

这个按钮直接对应一个 shell 脚本,点击就运行脚本之类的? 这个程序是放在 Linux 平台中的。我接触桌面应用开发很少,之前学过 PYQT,但是好像 pyqt 打包后太臃肿;所以来请教各位大佬们,这种情况下我该怎么实现这个需求?

语言:

Python or Java or C#( C#只是看过,如果框架确实很方便的话,我可以去学)


WPF 貌似还不能跑在 Linux 下。

桌面放一个 启动.sh 重启.sh 查看 status.sh 这样呢...?

十来年前,有个 Borland 的 JBuilder,好像开发 java 下的 gui 挺方便,现在不知道 javaFX 之类的东西,开发起来方便不。

我之前做过了,包括关闭.sh 重启.sh 。。。。。。


机智如你

不一定要桌面应用啊,web 更方便,搭一个 spring 直接执行 shell 即可,前端只要简单的 html 就搞定了

既然有 de/wm 的话
直接把你这些按钮对应的脚本在一个文件夹建 shortcut 就好了

Python pyside2 or pyqt5
有设计器,信号连接 省事

十分感谢。这个方案可以考虑一下。但是目前领导的需求是开发桌面应用。

java 写呗

chrome 更多工具-->创建快捷方式,改一下名字,这样不就是一个桌面应用了

pyqt 臃肿领导又看不见,第一步是能用就好。

樓主考慮 web 的話,可以在 pyqt 里嵌套瀏覽器,或者直接用 electron 寫

把 Jenkins 拿过来用吧,现成的

JavaFX 很方便,有工具的,拖拖拽拽 GUI 就出来了

electron 最简单

pyqt 啊,现在给公司做 ERP 二次开发,方便的很。你那只是一个按钮,直接绑定启动代码,简单的很。

pyqt javafx 太重了, 这种需求 直接 tkinter , 虽然丑是丑了点

pyqt 真不觉得重在哪里...打包也很方便

不用 PyGobject ?里面有 GLib,Gtk

whiptail ?

直接 tkinter 岂不更好 写完打完可执行文件完事 关键是轻量 足够用就好

只要一个按钮,为啥不学习一下 C++,直接用 Qt。反正又花不了多少时间,一个下午就搞定了。。
甚至你可以去搞个 Gtk 的 demo 改改就好了,C 语言就可以。

对还有 22L 老哥说的,Python 直接 tkinter 不就行了。

qt 哪里重了

pyqt 重那就不要用 pyqt,直接 C++写,甚至直接给个 qml 文件用 qmlscene 跑

似乎看见了一个命令注入 RCE 的现场。

打包又不用你把库打进去,做个 deb 自动装依赖不就行了。

用 qt,就这功能的话现学现写一天可以搞完

老哥们都再说啥呢。。用 python tkinter 写个界面 里面一个按钮对应一个 bash script 不就行了。。。。。。。。

写个简单的 web 界面其实挺好的,html/css/js 三件套基本都会嘛

同建议 qt,建个新项目拖动个按钮再跳转到槽,然后 system 函数调用你的脚本,几步就搞定,打包也简单。唯一花时间的可能就只是装开发环境了

Lazarus(free pascal)

Java 分分钟搞定

+1,第一反应也是 lazarus

外包吗? 100 块明天交货

浏览器 html 写两个按钮,custom protocol 映射 xdg 映射脚本。貌似这样写的代码是最少的。

从实现简单的角度来看:
python 比较容易
1. 不在乎颜值但是强烈在乎实现复杂度的话 pysimplegui
2. 稍微在乎颜值 wxpython, 已经稳定支持 python3
3. 特别在乎颜值, 直接 web UI
4. 在乎颜值但是不喜欢启动 http server, pyqt
话说都用上 linux 了, 为什么不搞 command line ui, pip install fire 就搞定了


谢谢大家的意见!学到了很多新的东西,回头我会好好研究研究。

QT 了解下,50 块外包今天交货

干脆让重启系统好了,写 rc.local

强烈推荐 QT, 楼上也有人说了

jenkins 行吗

可以用 mono 进行开发。gtk, winform,应该可以符合你的要求。

PyQt or Java Swing
快捷方便

做成 web 页 然后用 electron 等等的包一层就可以了。

c的 winform 也可以用 mono 跑在 linux 下,可以尝试一下
https://www.mono-project.com/docs/gui/winforms/

qt(C++, Python)或者 electron(JS, C++)是个人认为最良好的 GUI 开发跨平台方案

为什么不做成 web 管理工具,毕竟 Linux 一般都不安装桌面的,如果远程连接还需要开发服务端和客户端,不如直接做成 web

如果只是做非常简单的东西 直接用 python 自带的 tkinter 就行了,简单好学

linux 下的 gui 工具,很多都是用 java swing 来做的,跨平台很不错,就是上手有点难度。

tkinter,脚本写好的情况下,分分钟完事

47 楼正解。用 cexe,
在 linux 下 用 mono aaaa.exe 即可运行。win 下也可以运行。
点击按钮后,调用 shell 的 xxx.sh

楼主外包不?一上午写完


请问一下,现在我已经用 swing 做完了,是用 IEDA 写的,在我的 linux 电脑上已经测试通过了。那么怎么才能打包成一个应用,能直接在另外一台 linux 电脑上运行我的这个程序? 就像别的 linux 程序一样下载即用。


打包成可执行 jar 就行。不过要保证目标系统也装有 JRE。Win 下好像有第三方的打包工具打成 exe,而且可以把 JRE 一起打包。

https://github.com/chriskiehl/Gooey
把命令行应用包装为 GUI

数据地带为您的网站提供全球顶级IDC资源
在线咨询
专属客服