编写一个hello world GUI程序,三秒钟后关闭


24

请阅读规则,以及粗体字部分

只要具有对窗口系统的GUI支持(不能是文本控制台等,并且必须是GUI / toolkit / window),就可以用任何语言编写程序。

程序必须以任何方式(问候图像,菜单栏,状态栏,标题,视频,消息框,其他小部件内容等)打招呼,只要符合GUI的窗口并显示此文本三秒钟。可以使用最少的代码(以字节为单位)进行编码的人会很容易。


1
这里的评论已沦为毫无意义的论点。请避免在评论中进行更多讨论;如有必要,您可以改用聊天。所有评论已清除。
门把手

13
争论来自何处都没有关系-所有用户都应避免参与明显有噪音或无处可寻的纠纷。
门把手

1
它必须是“ Hello world”还是“ Hello_world”?
slebetman

3
另外,它必须优雅地退出吗?
slebetman

您没有指定程序必须如何运行?例如,它必须自己启动还是在已经运行的环境中加载?
Jordon Biondo

Answers:


28

Unix shell,31个字符

xmessage -timeout 3 hello world

message "hello world" with button "okay"

该程序需要X.Org 的xmessage(1)实用程序。它使用传统的黑白X Athena Widgets(Xaw)。


Grrr ...我打算发布一个timeoutzenity但使用的时间更长...
BenjiWiebe 2014年

@BenjiWiebe有一个zenity在答复N.1 codegolf.stackexchange.com/a/28451/4065
kernigh

2
您可以保存1个字节:超时3个xmessage你好世界
Glenn Randers-Pehrson,2014年

1
@ GlennRanders-Pehrson我不能这样做,因为我的机器没有timeout命令。也许其他人可以发布使用它的新答案?
kernigh 2014年

23

Shell and gedit-27个字符

timeout 3 gedit Hello World

如果Hello World需要显示为单个字符串,则其28个字符为:

timeout 3 gedit Hello\ World

timeout实用程序在指定的持续时间内运行命令。假设启动时间最短,它可以确保gedit运行3秒钟。

可以使用任何编辑器代替gedit。如果使用较短的命名编辑器(如)gvim,则可以将其长度减少1个或更多字符。

使用最初由user80551想到的编辑器。


逃脱空间,使用Hello\ World
user80551 2014年

1
@ user80551该问题要求以任何方式显示“ Hello World” ,因此这不是必需的。
asheeshr 2014年

从技术上讲,这将使它成为Hello <space> <close icon> <Document icon> World
user80551

您可以确认是否kate可以代替gedit吗?
user80551 2014年

@ user80551没有安装KDE,但是通过Kate的手册页,似乎没有任何理由不起作用。
asheeshr 2014年

19

Applescript,45个字节:

Applescript通常不是较短的答案之一:

display alert "hello world" giving up after 3

粘贴到Applescript编辑器中并运行,或osascript在命令行中使用运行:

osascript -e 'display alert "hello world" giving up after 3'

enter image description here


17

HTML + Javascript,73个 60个字符

<script>setTimeout("open('','_self','');close()",3e3)</script>Hello world

这在Chrome浏览器中有效,但可能无法移植到其他浏览器中。

评论意见提出了以下建议:

<body onload=open('',name=setTimeout(close,3e3))>Hello world

我看到了很多高尔夫。我看到这是从108字符到字符73。突然,整个代码可见。
贾斯汀

@Quincunx:您错过了最初的几次迭代。:)
Greg Hewgill

那是因为我正忙于发布自己的代码。:-)
贾斯汀

2
<body onload=open('','_self'),setTimeout(close,3e3)>Hello world似乎节省了几个字符。
2014年

1
您有一个来自user3082537的编辑建议:由<body onload=open('',name=setTimeout(close,3e3))>Hello world
Justin

16

外壳脚本,31

不确定是否合格。需要notify-send。至少在Ubuntu 12.04上有效。

notify-send -t 3000 Hello world

screenshot


1
可能不是,因为它不是GUI兼容的窗口。不幸的是,使用zenity时间更长。
user80551 2014年


4
我相信没有窗户装饰的窗户仍然是窗户。在“启蒙”中,该通知还具有一个X按钮将其关闭(但没有其他窗口装饰)。
kernigh 2014年

12

贝壳+ gedit / geany,34

gedit Hello\ World&sleep 3;kill $!

Hello World in gedit

假设从发出命令开始算起3秒钟,gedit即刻弹出。如果GUI文本编辑器的长度小于,则可以较小gedit

geany 同样适用于相同数量的字符 s/gedit/geany/g

Hello World in geany

编辑:使用timeout更短。/codegolf//a/28477/8766

EDIT2:谁能确认这是否适用kate


混合32

如果完全Hello World不需要,则meld可以使用。

meld Hello World&sleep 3;kill $!

Hello : World - Meld


好主意,gedit即使没有文件,也尝试用此名称打开文件。
AL

如果使用gvim它,则只需33个字符
可用

1
@Daniel halt会更短一些,但我不知道是否允许破坏性。而且,它需要root权限,因此我们要么需要假设我们是root用户,要么使用sudo它会花费更多(并且需要用户输入密码)。
user80551 2014年

1
抱歉,我正试图幽默。我假设用户具有root权限。
丹尼尔(Daniel)

1
@Daniel不必后悔,该站点基于最邪恶的曲解规则,使您的代码更短。
user80551 2014年

7

VBScript,58岁

WScript.CreateObject("WScript.Shell").Popup"Hello world",3

screenshot


6

Python(pygame),87岁

import pygame.display as d,time
d.set_mode()
d.set_caption('Hello world')
time.sleep(3)

screenshot


无法在OSX上运行,不显示窗口...
哈里·比德尔2014年

@BritishColour应该是,它太小了?尝试将大小更改为[999,999]
2014年

仍然无法正常工作,窗户甚至都没有出现……
哈里·比德尔2014年

@BritishColour好吧,它肯定对我有用。看这里。也许是在后台出现?
user12205 2014年

1
有趣的是,我们的代码基本相同,但是使用了不同的模块。tkinter原来更短。
贾斯汀

6

Tcl-32字节

我注意到,其中一些提交(例如shell或javascript提交)使您可以在控制台中键入代码。如果是这样,我可以将其缩短为:

wm ti . hello\ world;af 3000 exi

运行wish 必须在控制台中键入。意思是,在wish不带参数的情况下运行,这将为您提供一个REPL控制台,然后键入上面的代码。这利用了以下事实:tcl可以是宽松的和自动完成的命令/功能名称,但只能在交互模式下使用。这样就可以af实际执行after命令并exi执行exit。我想使用,ex但是我的系统已ex安装编辑器。


原始提交-36个字节

wm ti . hello\ world;after 3000 exit

使用wish代替运行tclsh


5

Mathematica的52 51个字符

(希望它算作一个GUI兼容的。)

NotebookClose/@{CreateDialog@"Hello world",Pause@3}

Mathematica GUI Golf code


4

Java,136个字节

class F{public static void main(String[]a)throws Exception{new java.awt.Frame("Hello World").show();Thread.sleep(3000);System.exit(0);}}

将消息显示Hello World为框架的标题。之后3秒钟后,程序关闭。

看起来像这样:

enter image description here

拖动更大:

enter image description here


扩展代码(即可读):

class F {

    public static void main(String[] a) throws Exception {
        new java.awt.Frame("Hello World").show();
        Thread.sleep(3000);
        System.exit(0);
    }

}

您可以使用enum而不是class保存另一个字符。
2014年

@Riking它不起作用。
贾斯汀

真?我可以发誓我实际上曾经用过那个...D。
2014年


4

R,44

x11(ti="Hello World");Sys.sleep(3);dev.off()

enter image description here


4

PowerShell的-63 52

(new-object -c wscript.shell).popup('Hello World',3)

4

Visual FoxPro-23个字符

WAIT"hello world"TIME 3

Hello world in VFP

这滥用了以下事实:VFP允许在要打印的字符串之间不留空格(我刚刚发现),并且允许将每个关键字缩短到最多前4个字符。

非高尔夫版本:

WAIT "hello world" TIMEOUT 3

4

GTK +, 47 45

zenity --info --text=Hello\ World --timeout=3

Hello World


旧版本(得分47):

zenity --info --title="Hello World" --timeout=3

Hello World

出于某种原因,zenity显示了可以翻译为“ 所有更新完成”的文本。


1
仅添加一些额外的信息,所有更新已完成。这是我用英语得到的。
user12205 2014年

1
您可以通过更改--title--text
asheeshr 2014年

1
您可以"Hello World"Hello\ World
2014年

感谢AsheeshR和kernigh,在您的帮助下,我少了两个角色。
AL

3

C,151个字符

#include<allegro.h>
main(){textout_ex(screen,font,"Hello World",0,0,7,set_gfx_mode('SAFE',8,8,install_timer(),
allegro_init()));rest(3e3);}END_OF_MAIN()

不是最小的答案。我也喜欢


做得好。&#32&#32&#32&#32
Sut Dip 2014年

那怎么编译?'SAFE'不是一个字符。
heinrich5991 2014年

@ heinrich5991 SAFE可能在allegro.h中定义为单个字符。
亚当·戴维斯

@AdamDavis C评估字符常量中的宏吗?
heinrich5991 2014年

1
没有宏,它实际上只是一个32位整数,以所谓的多字符常量表示法写为四个字节,这是一种写成四个字节的标记字符串的好方法。苹果曾经将它用于文件类型的幻数。如今,编译器支持它,但会发出警告。非信徒的例子
Wander Nauta

3

C#101 151

这肯定不是最短的答案(因为已经有其他更好的答案变得更短了),但是在我看来,codegolf.SE需要更多的C#贡献!

using t=System.Threading;class P{static void Main(){using(t.Tasks.Task.Run(()=>System.Windows.MessageBox.Show("hello world"))){t.Thread.Sleep(3000);}}}

C#121

基于Bob的答案的替代方法,但使用WPF而不是WinForms:

class P{static void Main(){new System.Windows.Window(){Title="hello world"}.Show();System.Threading.Thread.Sleep(3000);}}

由于命名空间较短,节省了3个字符。


您需要using在字符计数中包括声明。另外,您可以将它们排除在外,但随后您必须做类似的事情System.Windows.Forms.MessageBox.Show(如果只是一次使用,则字符数要少一些)。正如您的代码当前一样,它不会编译或运行。
鲍勃

好吧,我只是认为这不是必需的,因为我在C,C ++,C#,Java等中看到了很多答案,而无需任何使用/导入/任何操作。不过,我将对其进行编辑。顺便说一句,对此有明确规定吗?当然可以使用正确的编译设置和/或编译器进行编译和运行。(例如,在编译时使用指令进行解析,只要它们可以被不同地解析)
Num Lock


它是灰色的-例如,我必须添加对的引用System.Windows.Forms.dll,这是msbuild config / compile命令行的一部分。然而,普遍的共识似乎是,当请求一个完整的程序,using/ import/ #include/等。需要编译和运行代码的位置,并且尝试使用编译器命令行技巧来躲避不好的代码。
鲍勃

我会牢记这一点。感谢您的参考。
Num Lock

3

批次(24)

msg/time:3 * hello world

在Windows 7上进行了测试,但假定您在System32文件夹中有MSG.EXE,则它应该可以在任何基于NT的Windows版本上运行。

编辑:显然,MSG.EXE在Windows的家庭版本上默认不可用。例如,在Windows 7上,仅在Ultimate版或Business版中可用。但是,您可以将文件复制到System32文件夹中并使其正常工作。(您还必须复制适当的MSG.EXE.MUI文件以获取正确的错误消息,但是我的“脚本”在没有它们的情况下也可以工作。)

您还必须安装软件才能使其他大多数响应正常工作,因此我认为这不应成为取消资格的条件。


为什么不调用当前目录中名为time:3文件夹的程序msg

Windows使用@cat \
jimmy23013

一年前的@jimmy哇。我只是用来写/在所有平台上现在哎呀

@ jimmy23013但是Windows支持/
MilkyWay90

@ MilkyWay90 Windows支持/在一些地方,但cmd/xxx被解释为一个参数。
jimmy23013

2

APL(40)

X.Close⊣⎕DL 3⊣'X'⎕WC'Form' 'Hello World'

39:X.Close⊣⎕DL⍴⍕'X'⎕WC'Form' 'Hello World'
亚当

2

Lua +LÖVE,67个字节

l=love l.window.setTitle"hello world"l.timer.sleep(3)l.event.quit()

enter image description here



2

Perl 5,47

使用Perl / Tk

perl -MTk -e'alarm 3;tkinit-title,"Hello World!";MainLoop'
#     123    45678901234567890123456789012345678901234567

看来Tk模块是必需的。
AL

2
是的,您当然需要一些 GUI工具箱。我选择tk是因为tkinit()。
Matthias 2014年

我数了44个字节。您-MTk也在数国旗吗?
slebetman

@slebetman是的,我认为这是3个字符,我将其添加到了帖子中。
Matthias 2014年

1
@ n.1我将其添加到标题下方,并带有指向Tk模块的CPAN文档的链接。perl核心模块都不是GUI模块,因此,您始终必须安装外部模块。抱歉,这对我来说很清楚(因为我经常使用perl),但是您是对的,对于那些使用其他语言工作的人来说,这是令人惊讶的。
Matthias 2014年

2

Rebol View(r3gui),49

view/no-wait[title"hello world"]wait 3 unview/all

"hello world" from Rebol 3 View

取消高尔夫:

view/no-wait [title "hello world"]
wait 3
unview/all

2

处理中,77

int x=millis();void draw(){text("Hello world",0,9);if(millis()>x+3e3)exit();}

屏幕截图:

enter image description here

编辑1:如@ace所示,文本的Y位置可以是9而不是10。

编辑2: 3000可以表示为3e3以删除一个字符,也用@ace表示


3
Y位置使用9而不是10适合我。
user12205 2014年

刚刚编辑了代码。谢谢!
segfaultd 2014年

3
只是注意到您可以使用3e3而不是3000再保存一个字符
user12205 2014年

2

bash + ImageMagick(36字节)

timeout 3 display label:Hello\ world

在Ubuntu 14.04 LTS和Fedora 20上测试。

看起来更好,但大了10个字节:

timeout 3 display -size 800 label:Hello\ world

2

CMD /批次-33字节

我相信Windows CMD终端运行的窗口算是GUI兼容的。

start "Hello world" cmd /csleep 3

如果您sleep的系统上没有该命令,则可以使用timeout Windows 7中的默认。另外两个字节。

start "Hello world" cmd /ctimeout 3

用标题“ Hello World”(不是)启动一个新的CMD窗口。在终端本身的显示,但是作为GUI窗口的标题,在终端运行),该窗口将关闭,一旦所有解析的命令已经执行-所以以后sleep 3要么timeout 3已完成。

窗口看起来像这样-

Bloke

注意; start在新窗口中运行给定命令-而不是从中运行上述命令的窗口。


将其更改为cmd "Hello world" cmd /ctimeout 3将Hello world放在标题栏中3秒钟,但这可能不算在内。
克里斯·肯特

1
我认为不会,因为它不会产生新的窗口。问题是出现了一个与GUI兼容的窗口(似乎是关键字),这意味着它必须显示一个新窗口。好主意。
2014年

start "Hello world"先生,您是天才。
user8397947 '16

1

Python 3,83 72字节

from tkinter import*
f=Tk()
f.wm_title("Hello World")
f.after(3000,exit)

使用保存字节tkinter

旧方法将a添加Label到框架中。此方法将框架的标题设置为Hello World。经过毫秒后f.after(3000,exit)运行。exit()3000


相同的想法,不同的模块:turtle具有更少的字节。= D codegolf.stackexchange.com/a/28548/14506
daviewales

1

眼镜蛇-180

use System.Windows.Forms
use System.Threading
class M
    def main
        Thread(ref .w).start
        Thread.sleep(3000)
        Environment.exit(0)
    def w
        MessageBox.show("hello world")


1

C#124

距离最短的:(

class P{static void Main(){new System.Windows.Forms.Form(){Text="Hello World"}.Show();System.Threading.Thread.Sleep(3000);}}
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.