Terminal.Gui - 适用于 .NET 的跨平台终端 UI 工具包

程序员有二十年2024-05-04 08:23:07  75

Terminal.Gui

Terminal.Gui 是一个使用 C# 开发的基于控制台的工具库。这个框架的设计目的是, 在单色终端和支持鼠标的现代彩色终端上, 开发人员也可以非常轻松地进行开发并运行程序。

Terminal.Gui 是跨平台的, 它适用于 Windows、Linux 和 MacOS。

如何使用?

在 .NET Core 项目中安装, 可以使用 dotnet CLI 或者 Nuget。

dotnet add package Terminal.Gui

下面是一个简单的示例:

using Terminal.Gui;

classDemo

{

staticintMain

{

Application.Init;

var n = MessageBox.Query(50, 7,

"Question", "你喜欢这个控制台应用吗?", "Yes", "No");

Application.Shutdown;

return n;

}

}

运行程序后,控制台显示内容如下:

这个代码进行提示并返回一个整数值,它取决于用户选择的值(Yes,No,或者不选择去按 ESC 键)。

还可以通过组合所包含的各种视图来创建更有趣的用户界面。

下面是一个使用用户名和密码进行登录的一个示例。

// A simple Terminal.Gui example in C# - using C# 9.0 Top-level statements

using Terminal.Gui;

Application.Run ;

System.Console.WriteLine ($"Username: {((ExampleWindow)Application.Top).usernameText.Text}");

// Before the application exits, reset Terminal.Gui for clean shutdown

Application.Shutdown ;

// Defines a top-level window with border and title

publicclassExampleWindow : Window {

public TextField usernameText;

publicExampleWindow

{

Title = "Example App (Ctrl+Q to quit)";

// Create input components and labels

var usernameLabel = new Label {

Text = "Username:"

};

usernameText = new TextField ("") {

// Position text field adjacent to the label

X = Pos.Right (usernameLabel) + 1,

// Fill remaining horizontal space

Width = Dim.Fill ,

};

var passwordLabel = new Label {

Text = "Password:",

X = Pos.Left (usernameLabel),

Y = Pos.Bottom (usernameLabel) + 1

};

var passwordText = new TextField ("") {

Secret = true,

// align with the text box above

X = Pos.Left (usernameText),

Y = Pos.Top (passwordLabel),

Width = Dim.Fill ,

};

// Create login button

var btnLogin = new Button {

Text = "Login",

Y = Pos.Bottom(passwordLabel) + 1,

// center the login button horizontally

X = Pos.Center ,

IsDefault = true,

};

// When login button is clicked display a message popup

btnLogin.Clicked += => {

if (usernameText.Text == "admin" && passwordText.Text == "password") {

MessageBox.Query ("Logging In", "Login Successful", "Ok");

Application.RequestStop ;

} else {

MessageBox.ErrorQuery ("Logging In", "Incorrect username or password", "Ok");

}

};

// Add the views to the Window

Add (usernameLabel, usernameText, passwordLabel, passwordText, btnLogin);

}

}

运行程序后,输入 admin 和 password,页面显示如下

应用和扩展

Terminal.Gui 的社区非常活跃,已经有很多基于它开发的应用。

Terminal Gui Designer

TerminalGuiDesigner 使用 CodeDom 和 Roslyn 构建,可让您通过拖放来创建复杂的视图,就像您熟悉和喜爱的 WinForms 设计器一样。

Dotnet Dump 分析器

这是一个基于gui.cs 的小型ui,可以和 dotnet dump 一起使用,它能够列出所有受支持的 SOS 命令的输出。

项目地址

https://github.com/gui-cs/Terminal.Gui

点收藏

转载此文是出于传递更多信息目的。若来源标注错误或侵犯了您的合法权益,请与本站联系,我们将及时更正、删除、谢谢。
https://www.414w.com/read/412187.html
0
随机主题
被注射抑生长剂, 皮肤溃烂无人管, 这3位童星, 真的被父母害惨了“钱江源”点亮“直播之光” 阿里公益在开化开设数字人才基地电脑时间日期不自更新了怎么办?为什么每次开机时间都不对?娶过三个老婆的五位男明星四川蓬安: 农机助农人 小麦抢收忙DNF手游疲劳值用完, 除了站街还有7种游戏玩法: PVP、深渊、试炼普京访华圆满结束,临行前对华再表态,特朗普斥责拜登政府无能!辽篮停车场被曝! 全是顶级豪车奢华程度令人羡慕, 郭艾伦豪车最多原神为救流水, 动画攻势来了, 调香师和5.0纳塔希巴拉克建模首爆在历史街区邂逅科技市集! 快来这里飞跃“数字鸿沟”揭秘抗战时期我党如何在老蒋眼皮底下不知不觉中壮大八路军实力。赵云:常山龙胆,三国风云中的不朽传奇樱井政博: 为避免《大乱斗》浪费玩家时间, 曾移除游戏部分音效虽然这场战争结局未卜, 普京已经在将自己与彼得大帝相提并论谋财害命! 英国购买美国血制品, 3万人感染疾病, 英首相含泪道歉加油站的汽油都藏在哪里?那么多的油,是怎么防止它发生危险的?618保姆级购机攻略:照着这个清单买绝对错不了!空位三分不敢投, 关键时刻甩锅坑队友, 球迷怒批: 最水的MVP低空经济利好不断! 炒作风暴有望继续爆发! 相关概念和潜力股曝光!章子怡抵达戛纳, 墨镜白衣状态超级美, 落地即被众多外国粉丝欢迎独行侠被狼队压制! 欧文24+1东契奇6中1, 华子13+8, 李凯尔大爆发
最新回复(0)