对于想了解如何在linux中显示来自bash脚本的GUI消息框?的读者,本文将提供新的信息,我们将详细介绍linux显示bash-4.1,并且为您提供关于bash–如何在一分钟后在linux中启动sh
对于想了解如何在 linux 中显示来自 bash 脚本的 GUI 消息框?的读者,本文将提供新的信息,我们将详细介绍linux显示bash-4.1,并且为您提供关于bash – 如何在一分钟后在linux中启动shell脚本?、C# 表单在消息框/新表单中显示来自数据库/图表的排名列表、C#:GUI,用于显示来自Windows服务的实时消息、inno-setup – 如何在指定时间内显示消息框?的有价值信息。
本文目录一览:- 如何在 linux 中显示来自 bash 脚本的 GUI 消息框?(linux显示bash-4.1)
- bash – 如何在一分钟后在linux中启动shell脚本?
- C# 表单在消息框/新表单中显示来自数据库/图表的排名列表
- C#:GUI,用于显示来自Windows服务的实时消息
- inno-setup – 如何在指定时间内显示消息框?
如何在 linux 中显示来自 bash 脚本的 GUI 消息框?(linux显示bash-4.1)
我正在 Ubuntu linux 下编写一些小 bash 脚本。我希望能够从 GUI 运行它们,而无需终端窗口来输入任何输入或查看任何输出。
到目前为止,唯一需要的输入是 sudo 的密码 - 而 gksudo
处理得很好。但是我还没有找到一种简单的方法来显示消息框。是否有某种“gkmessage”命令可用?我更喜欢默认 Ubuntu
安装中存在的东西,但我不介意在必要时安装新包。
答案1
小编典典我相信Zenity会做你想做的事。它是专门为从命令行显示 GTK
对话框而设计的,它以Ubuntu 软件包的形式提供。
bash – 如何在一分钟后在linux中启动shell脚本?
假设有两个bash文件a.sh和b.sh
我想在a.sh执行一分钟(或几秒)后执行b.sh.
我应该在a.sh中编码什么?
例:
echo b.sh | at Now + 1 minute
要么:
echo b.sh | at -t `date -v+60S "+%Y%m%d%H%M%s"`
-v 60S增加了60秒的当前时间.您可以精确控制要添加的秒数.
但通常情况下,当人们希望一个程序在一分钟之后启动时,他们并非100%确定它不会花费多于或少于一分钟.而已. b.sh可以在a.sh完成之前启动.或者a.sh可能比“计划”早30秒完成,而b.sh本来可以更快开始.
我会推荐一个不同的型号.哪个b.sh首先发布.a.sh在启动时创建临时文件. execute是任务并在最后删除其临时文件.b.sh监视要创建的临时文件,然后删除.并开始其任务.
C# 表单在消息框/新表单中显示来自数据库/图表的排名列表
如果我答对了,试试这个。您可以使用 LINQ 对图表/数据网格视图进行排序。
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace WindowsFormsApp9
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender,EventArgs e)
{
List<Product> products = new List<Product>(); // your chart/datagridview
products.Add(new Product { Name = "Banana",Price = 1 });
products.Add(new Product { Name = "Orange",Price = 10 });
products.Add(new Product { Name = "Apple",Price = 5 }); // your products
products = products.OrderByDescending(p => p.Price).ToList(); // ordering products by price
StringBuilder sb = new StringBuilder();
int i = 1;
foreach (var product in products)
{
sb.Append($"{i}. {product.Name} - {product.Price}\n");
i++;
}
MessageBox.Show(sb.ToString());
}
}
class Product
{
public string Name { get; set; }
public int Price { get; set; }
}
}
,
使用数据绑定将数据(模型)与数据的显示方式(视图)分开。
您的 DataGridView 有一个数据源。用它来显示数据。
class DisplayedProduct
{
public int Id {get; set;}
public string Name {get; set;}
public int Quantity {get; set;}
public decimal Price {get; set;}
}
使用 Visual Studio 设计器创建列并告诉哪个列应该显示哪个属性,或者以编程方式执行此操作。
public MyForm : Form
{
public MyForm()
{
this.InitializeComponent();
this.columnId.DataPropertyName = nameof(DisplayedProdut.Id);
this.columnName.DataPropertyName = nameof(DislayedProduct.Name);
...
}
我会做很多小方法,所以它们会容易理解、容易重用、容易单元测试、调试和更改:
获取产品:
private IEnumerable<DisplayedProduct> FetchProductsToDisplay()
{
... // TODO: implement
}
创建一个属性来显示产品并获取显示的(可能编辑过的)产品:
private BindingList<DisplayedProduct> DisplayedProducts
{
get => (BindingList<DisplayedProduct>)this.dataGridView1.DataSource;
set => this.dataGridView1.DataSource = value;
}
并在表单加载时显示产品:
private void InitProductDisplay()
{
this.DisplayedProducts = new BindingList<DisplayedProduct>
this.FetchProductsToDisplay.ToList());
}
private void OnFormLoading(object sender,...)
{
this.InitProductDisplay();
}
这足以显示产品,并在需要时获取它们。操作员所做的所有更改(添加/删除行、编辑单元格)都会自动反映在绑定列表中。
private IEnumerable<DisplayedProduct> GetTopProducts()
{
return this.DisplayedProduts.OrderByDescending(product => product.Quantity);
}
private string CreateTextTopProducts(int count)
{
IEnumerable<DisplayedProduct> top3Products = GetTopProducts()
.Select((product,index) => new
{
Index = index + 1,// select the properties that you want to show in the messagebox:
Name = product.Name,...
})
.Take(count);
// use a string builder to efficiently add formatted lines:
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.AppendLine("Top 3 items:");
foreach (var product in top3Products)
{
stringBuilder.AppendFormat("{0}. {1}",product.Index,product.Name);
stringBuilder.AppendLine();
}
return stringBuilder.ToString();
}
最后是展示top3产品的方法:
private void ShowTop3Products()
{
string displayText = this.CreateTextTop3Products(3);
MessageBox.Show(this,displayText,...);
}
private void button2_Click(object sender,EventArgs e)
{
this.ShowTop3Products();
}
C#:GUI,用于显示来自Windows服务的实时消息
我现在要做的是创建一个GUI,可以监听这些消息并实时显示它们.允许用户观看当前消息(无论其所需的优先级),而无需将所有内容存储到文件中.我假设这是一个单独的程序,在服务中有某种形式的钩子,但我不确定从哪里开始.
这是我的第一个真正的Windows服务,所以我似乎缺少一些关键字,以找出如何做到这一点…是否有任何代码示例,教程,参考,如何做这样的事情?
UPDATE
很多有用的答案,我喜欢它,有很多方法可以解决问题!我想我将实现一个基于WCF的自托管解决方案.我仍然非常关注细节,因为我正在尝试了解WCF(我相信它对我在其他项目中非常有用)…但到目前为止,我发现视频here是最多的有用的介绍方法.
解决方法
http://social.msdn.microsoft.com/Forums/en-US/wcf/thread/0eb69998-0388-4731-913e-fb205528d374/
http://msdn.microsoft.com/en-us/library/ms731184.aspx
实际上,真正酷的是你可以通过这种方式监听多个应用程序.因此,您可以在屏幕上显示它,并让另一个应用程序记录它等,而不需要两个外部应用程序了解彼此.
inno-setup – 如何在指定时间内显示消息框?
解决方法
该函数被称为MessageBoxTimeout,它甚至在user32.dll库中导出,让我觉得这个函数唯一缺少的是官方文档.但是谁知道……
以下脚本显示如何在显示向导表单之前显示消息框5秒.如果用户未单击“确定”按钮,也不手动关闭窗口,则在该5秒时间过后,消息框将自动关闭:
[Code] #ifdef UNICODE #define AW "W" #else #define AW "A" #endif const MB_TIMEDOUT = 32000; MB_ICONERROR = $10; MB_ICONQUESTION = $20; MB_ICONWARNING = $30; MB_ICONinformatION = $40; function MessageBoxTimeout(hWnd: HWND; lpText: string; lpCaption: string; uType: UINT; wLanguageId: Word; dwMilliseconds: DWORD): Integer; external 'MessageBoxTimeout{#AW}@user32.dll stdcall'; procedure InitializeWizard; begin MessageBoxTimeout(WizardForm.Handle,'This message will be automatically ' + 'closed in 5 seconds!','Caption...',MB_OK or MB_ICONinformatION,5000); end;
有关参数和结果值的更多信息,请参阅MessageBox
函数帮助站点和一些描述MessageBoxTimeout函数本身的非官方文章,例如:
> Maurizio Pisano: MessageBoxTimeout API (CodeProject)
> Eddie Shipman: Undocumented MessageBoxTimeOut function (Embarcadero)
我们今天的关于如何在 linux 中显示来自 bash 脚本的 GUI 消息框?和linux显示bash-4.1的分享已经告一段落,感谢您的关注,如果您想了解更多关于bash – 如何在一分钟后在linux中启动shell脚本?、C# 表单在消息框/新表单中显示来自数据库/图表的排名列表、C#:GUI,用于显示来自Windows服务的实时消息、inno-setup – 如何在指定时间内显示消息框?的相关信息,请在本站查询。
本文标签: