Python开发可视化简易版可执行程序

很多命令行程序运行都是需要一定专业知识的,需要用户懂基本的dos命令或者linux命令。为了实现可视化简易版本的桌面可执行程序,小编我尝试用Python来做一层封装。

首先,需要用python做一个可视化界面出来,让用户无需输入命令行参数,直接在可视化的窗口界面里填写参数即可。使用 Python的 tkinter库,窗体元素代码如下:

label1 = tkinter.Label(top, text=“XMR Pool”, width=15)
pool = tkinter.Entry(top, width=25)
label2 = tkinter.Label(top, text=“XMR钱包地址”, width=15)
wallet = tkinter.Entry(top, width=25)
label3 = tkinter.Label(top, text=“CPU使用率(%)”, width=15)
cpu = tkinter.Entry(top, width=25)
label4 = tkinter.Label(top, text=“线程数”, width=15)
threads = tkinter.Entry(top, width=25)
label5 = tkinter.Label(top, text=“当前算力(H/s)”, width=15)
varhs = tkinter.StringVar(top, value=‘0’)
hstext = tkinter.Entry(top, textvariable=varhs, width=25)
label6 = tkinter.Label(top, text=“出块数量”, width=15)
varblock = tkinter.StringVar(top, value=‘0’)
blocktext = tkinter.Entry(top, textvariable=varblock, width=25)

scr = ScrolledText.ScrolledText(top, font=(“隶书”,12))
采用表格式布局方法,将这些文本框、输入框、按钮规则的显示到窗口上,代码如下:

label1.grid(row=0, column=0, sticky=‘w’)
pool.grid(row=0, column=1, sticky=‘w’)
label2.grid(row=0, column=2, sticky=‘w’)
wallet.grid(row=0, column=3, sticky=‘w’)
helpButton.grid(row=0, column=4, sticky=‘w’)
label3.grid(row=1, column=0, sticky=‘w’)
cpu.grid(row=1, column=1, sticky=‘w’)
label4.grid(row=1, column=2, sticky=‘w’)
threads.grid(row=1, column=3, sticky=‘w’)
minerButton.grid(row=1, column=4, sticky=‘w’)

label5.grid(row=2, column=0, sticky=‘w’)
hstext.grid(row=2, column=1, sticky=‘w’)
label6.grid(row=2, column=2, sticky=‘w’)
blocktext.grid(row=2, column=3, sticky=‘w’)

scr.grid(row=3, column=0, columnspan=4, sticky=‘w’)
界面做好后,怎么启动命令行程序呢?这里就需要用到Python调用进程的函数了,在“开始”按钮被点击时,直接调用命令行进程xmrig

myPopenObj = subprocess.Popen(command, stdout=subprocess.PIPE)
不过由于xmrig是独占进程,直接调用的话,会导致按钮按下抬不起来,因为主线程被占用了。因此需要用到python新建线程功能,让挖矿程序运行在一个独立的新的线程里:

_thread.start_new_thread(start_miner, (command,))
这样按钮点下去,进程就启动了,但进程到底运行的是否正常,连接网络是否成功呢?这些信息其实都在xmrig进程的log打印里,我们需要把这些打印也输出到窗口的文本框里,让用户能看到进程运行状况,因此我们需要在一个 while 循环里反复去读取进程的打印,把它输出到屏幕上。

while isMining: # 将内容持续输出
line = myPopenObj.stdout.readline().decode(“gbk”).strip() + “\n”
至此,一个可视化程序即可诞生了,但为了用户方便使用,还应该把它打包为exe,这里就需要用到python的pyinstaller库,打包完双击即可运行,效果如下:

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值