Python 创建可点击的 TUI 条目

Python 创建可点击的 TUI 条目

我的脚本有一个 TUI,但有时计算机只使用鼠标,所以我想让它们成为用户可点击的条目

代码使用python

代码太长,无法粘贴在这里,所以这里有一个链接到 Github 页面

基本上,我想要的是可点击的终端文本,它打开代码中的一个程序,以尽量减少计算机上的负载,在这种情况下,代码在树莓派上运行,并且由于 RAM 有限和 8 GB SD 卡,我尝试使一切尽可能保持简约。

所以当我发布这个答案时,我在网上四处寻找,并找到了用于图形轻量级 GUI 的 TKinter,我开始乱搞,发现为了让我的脚本显示文本,我需要一个 GUI 内的终端窗口,所以我谷歌了一下,找到了

有人基本上按照我的想法做了,但是他遇到了一个错误,令人惊讶的是,经过整整一个小时的尝试后,我真的解决了这个问题,现在我有一个可以正常工作的 GUI,上面有按钮和终端单元 :)

----------------------------最终完整解释-------------------------

因此,在发现 xterm 中的 TUI 无法点击后,我研究了不同的选项,我发现了多个选项,一个是使用 zenity,但我不喜欢它,因为我之前安装过它(请记住这是一个内存有限的 1 GB 的树莓派)并且它几乎耗尽了内存中的 RPI,我几乎害怕这种情况会再次发生,所以我跳过了 zenity。

我看到了 Tkinter,它基本上是文本到 GUI,它简单、轻便(因为它几乎都是代码,而不是像 zenity 那样的沉重的 GUI),如果你了解 Python 的话就很容易使用,所以我进一步研究了它,看到了几乎无限的可能性。

因此我开始将 TUI 重写为轻量级 GUI(最终它成为了自己的瘦客户端,如此屏幕截图

然而,当我开始使用它时,我无法像我想要的那样工作(因为我的大多数工具都依赖于基于终端的执行(用户易用性:)),所以经过几个小时的谷歌搜索,我发现了这个unixSE 帖子,那段代码正是我需要的,但是我发现它有 bug,所以我研究了一下(修复别人的东西是我的爱好和工作!),几分钟后我修好了它,并且让它正常工作,所以我开始编辑其中的大部分内容,最终在自己的代码中使用了它的片段。

大约两周后(哇哦!)终于完成了,代码已上传至github对于任何想看的人来说。

答案1

我下载并安装了 Tkinter,经过一些调整后,我让它工作了

--------------------------------添加解释----------------------------------

所以当我发布这个答案时,我在网上四处寻找,并找到了用于图形轻量级 GUI 的 TKinter,我开始乱搞,发现为了让我的脚本显示文本,我需要一个 GUI 内的终端窗口,所以我谷歌了一下,找到了

有人基本上按照我的想法做了,但是他遇到了一个错误,令人惊讶的是,经过整整一个小时的尝试后,我真的解决了这个问题,现在我有一个可以正常工作的 GUI,上面有按钮和终端单元 :)

----------------------------最终完整解释-------------------------

因此,在发现 xterm 中的 TUI 无法点击后,我研究了不同的选项,我发现了多个选项,一个是使用 zenity,但我不喜欢它,因为我之前安装过它(请记住这是一个内存有限的 1 GB 的树莓派)并且它几乎耗尽了内存中的 RPI,我几乎害怕这种情况会再次发生,所以我跳过了 zenity。

我看到了 Tkinter,它基本上是文本到 GUI,它简单、轻便(因为它几乎都是代码,而不是像 zenity 那样的沉重的 GUI),如果你了解 Python 的话就很容易使用,所以我进一步研究了它,看到了几乎无限的可能性。

因此我开始将 TUI 重写为轻量级 GUI(最终它成为了自己的瘦客户端,如此屏幕截图

然而,当我开始使用它时,我无法像我想要的那样工作(因为我的大多数工具都依赖于基于终端的执行(用户易用性:)),所以经过几个小时的谷歌搜索,我发现了这个unixSE 帖子,那段代码正是我需要的,但是我发现它有 bug,所以我研究了一下(修复别人的东西是我的爱好和工作!),几分钟后我修好了它,并且让它正常工作,所以我开始编辑其中的大部分内容,最终在自己的代码中使用了它的片段。

大约两周后(哇哦!)终于完成了,代码已上传至github对于任何想看的人来说。

---------------------------- ZANNA 的愿望! ----------------------------

#!/usr/bin/env python
# -*- coding: utf-8 -*-
#title           : TBMenu
#Omschijving     : Geeft een simpel menu weer dat interactief is/shows a menu which is interactive
#Made by         : Patrick Pigmans
#Made for        : Servicenet-ITF
#Made at         : 2nd of August 2016
#python_version  : 2.7.12/3.5.2
#=======================================================================#

import Tkinter
from Tkinter import *
import subprocess
import os
from os import system as cmd

def test():
    os.system('sudo xterm -into %d -geometry 100x28 -sb -e overscan &' % terminfo)

def sysinfo():
    os.system('xterm -into %d -geometry 100x28 -sb -e systeminfo &' % terminfo)

def ipconf():
    os.system('xterm -into %d -geometry 51x11 -sb -e ipconfig &' % terminfo)

def Uninstall():
    os.system('sudo xterm -into %d -geometry 100x28 -sb -e TBuninstall &' % terminfo)

WINDOW_SIZE = "1024x768"
top = Tkinter.Tk()
top.geometry(WINDOW_SIZE)

Button1  = Tkinter.Button(top, text ="Systeem informatie opvragen", command=sysinfo)
Button1.pack()

Button2  = Tkinter.Button(top, text ="IP adres achterhalen", command = ipconf)
Button2.pack()

Button3  = Tkinter.Button(top, text ="Zwarte balken weghalen", command = test)
Button3.pack()

Button4 = Tkinter.Button(top, text = "Tools Verwijderen", command = Uninstall)
Button4.pack()

termin = Frame(top, height=1000, width=1000)

termin.pack(fill=BOTH, expand=YES)
terminfo = termin.winfo_id()


def send_entry_to_terminal(*args):
    cmd("%s" % (BasicCovTests))

if __name__ == "__main__":
    top.title('KEUZE MENU')
    top.mainloop()

该代码通常与我的其他工具一起使用,因为它只是一个菜单:P

相关内容