Erstellen Sie ein Kontrollkästchen


51

Schreiben Sie ein Programm, das ein Kontrollkästchen mit zwei Status erstellt, mit dem Benutzer mit einer Maus interagieren können.

Insbesondere sollte Ihr Programm Folgendes erreichen:

  1. Stellen Sie einen Bildschirmbereich von 8 × 8 Pixel (oder, falls gewünscht, größer) als den anklickbaren Bereich des Kontrollkästchens ein. Diese Region wird fortan einfach als Checkbox bezeichnet.

  2. Wenn der Mauszeiger innerhalb des Kontrollkästchens bewegt und die Standard-Maustaste * gedrückt wird, sollte das Kontrollkästchen den Status umschalten.
    Aktiviert wird deaktiviert. Nicht angehakt wird angehakt.

  3. Das Kontrollkästchen sollte sich beim Umschalten nicht bewegen.

  4. Im aktivierten Zustand kann das Kontrollkästchen eine beliebige Farbe haben.

  5. Im deaktivierten Zustand kann das Kontrollkästchen eine beliebige Farbe haben , solange sich mindestens 16 Pixel visuell vom aktivierten Zustand unterscheiden .

  6. In einer einzelnen Programminstanz sollten alle aktivierten Zustände visuell identisch sein und alle nicht aktivierten Zustände sollten visuell identisch sein.

  7. Beenden Sie das Programm erst, wenn es explizit beendet wurde (z. B. über die Schaltfläche "Beenden" oder Alt + F4), damit ein Benutzer das Kontrollkästchen so oft anklicken kann, wie er möchte.

* Sie können davon ausgehen, dass die Standard-Maustaste immer mit der linken Maustaste gedrückt wird. Es ist jedoch auch in Ordnung, die von der Maussoftware oder dem Betriebssystem festgelegte Standard-Maustaste zu verwenden, die je nach Benutzer möglicherweise nicht mit der linken Maustaste gedrückt wird.

Anmerkungen

  • Es spielt keine Rolle, was sich außerhalb Ihrer Kontrollkästchenregion befindet. Es könnte nur der Desktop sein. Dies kann ein Teil einer Konsole sein, der sich bei jedem Wechsel ändert.

  • Es spielt keine Rolle, in welchem ​​Status Ihr Kontrollkästchen startet.

  • Der Kontrollkästchenbereich kann beliebige Abmessungen bei oder über 8 × 8 Pixeln haben. Es muss nicht quadratisch sein.

  • Möglicherweise berücksichtigen Sie geringfügig Einstellungen, die außerhalb Ihrer Kontrolle liegen, z. B. die Schriftgröße der Konsole, den Browserzoom, die Bildschirmauflösung usw. Solange Ihr Programm in einer angemessenen Testeinstellung ausgeführt wird, sollte es gültig sein.

  • Wenn Ihr Programm ein Fenster öffnet, können Sie davon ausgehen, dass es bei Bedarf an eine geeignete Stelle auf dem Bildschirm gezogen wurde (z. B. in der oberen linken Ecke).

  • Sie können Auszeichnungssprachen wie HTML oder andere Sprachen verwenden, die wir normalerweise nicht als vollwertige Programmiersprachen betrachten.

  • Ihr Kontrollkästchen muss mit der Standard-Maustaste umschaltbar sein. Es ist in Ordnung, wenn mit Ausnahme der Mausbewegung auch auf andere Eingabeformen (z. B. rechte Maustaste) umgeschaltet wird . dh der Zustand sollte sich nicht ändern, wenn die Maus nur innerhalb der Checkbox bewegt wird.

  • Screenshots Ihres Kontrollkästchens in Aktion sind ausdrücklich erwünscht!

Wertung

Der kürzeste Code in Bytes gewinnt.

Beispiel

Ein kanonisches HTML-Beispiel in 23 Bytes.

<input type="checkbox">

Für mich in Google Chrome bedeutet dies, dass ein Kontrollkästchen mit 12 × 12 Pixeln angezeigt wird und ungefähr 30 Pixel deutlich zwischen aktivierten und deaktivierten Status wechseln.

Ich gehe davon aus, dass der Browser-Zoom 100% beträgt.


2
Kann das Kontrollkästchen den gesamten Bildschirm abdecken?
Kritixi Lithos

@KritixiLithos Ja, das wäre gültig. Beachten Sie jedoch, dass Sie bei Bedarf eine bestimmte 8x8-Region als offizielles Kontrollkästchen festlegen können, auch wenn eine größere Region funktioniert.
Calvins Hobbys

@Helka Homba - Darf eine App neben dem Kontrollkästchen selbst andere Steuerelemente anzeigen?
Zeppelin

Ist es in Ordnung, wenn das Kontrollkästchen andere Arten von Eingaben aktiviert? (Ist eine Lösung beispielsweise korrekt, wenn das Kontrollkästchen bei jeder Benutzereingabe umschaltet, unabhängig davon, ob es sich um einen Mausklick, eine Mausbewegung oder einen Tastendruck handelt? Es wird bei einem Mausklick umgeschaltet, aber es wird umgeschaltet.) andere Reize auch.)

1
@zeppelin "Es spielt keine Rolle, was sich außerhalb Ihres Kontrollkästchenbereichs befindet. Es kann sich nur um den Desktop handeln. Es kann sich um einen Teil einer Konsole handeln, der sich bei jedem Umschalten ändert." Solange das Kontrollkästchen aktiviert ist, spielt es keine Rolle, was es sonst noch gibt.
Calvins Hobbys

Antworten:


33

Mathematica, 10 Bytes

Checkbox[]

Übernimmt die Notebook-Umgebung von Mathematica .

Die beiden Zustände sehen folgendermaßen aus:

Bildbeschreibung hier eingeben


73
Sicher. Mathematica betrügt erneut.
Matthew Roh

1
Es ist lustig, wie der Kommentar mehr positive Stimmen hat als die Antwort
RudolfJelin

4
@ RudolfL.Jelínek es ist lustig, wie die Antwort überhaupt irgendwelche Aufwertungen hat ...
Martin Ender

31

HTML, 20 Bytes

Ich weiß nicht, wie gültig dies als Antwort sein wird. HTML erfordert, dass das Tag geschlossen wird, damit es rechtsgültig ist. Moderne Browser schließen es jedoch automatisch, damit es ausführbar ist.

<input type=checkbox


3
Ich habe dies früher als Option betrachtet (ohne Anführungszeichen), aber den Abschluss völlig verpasst >. +1 und gültige IMHO.
ElPedro

1
Auf dieser Site werden Sprachen durch ihre Implementierung definiert, daher scheint mir das in Ordnung zu sein.
John Gowers

1
Danke @ JohnGowers, ich habe mich gefragt, wie viel Missbrauch akzeptabel ist.
Jan

27

Bash , 67 55 50 35 32 31 Bytes

:()(read -p$[i^=1]
›?9h -sn6
:)

Der Code enthält ein CR-Byte (erste Zeile) und ein CSI-Byte (kleine eckige Klammer mit der Windows-1252-Codierung). Es erfordert xterm (oder ein gleichwertiges) und die ISO-8859-1-Codierung (oder ähnliches).

Der Code definiert eine benannte Funktion :, die abwechselnd eine weiße 1 oder 0 in einem schwarzen Rechteck anzeigt . Es gibt genau 24 unterschiedliche Pixel mit den Standardeinstellungen von xterm. ( Beweis )

Bei einer älteren Version, bei der die Farbe des gesamten Terminals umgeschaltet wird, überprüfen Sie Revision 10 dieser Antwort.

Vielen Dank an @ ais523 für die Empfehlung von xterm, das 4 Bytes einspart!

Wie es funktioniert

:(...)Erstellt eine Funktion mit dem Namen :, die ausgeführt wird ....

Der Lesebefehl führt die eigentliche Magie aus.

  • -p Gibt eine Eingabeaufforderung an, die an STDOUT ausgegeben wird.

    • $[i^=1]ist eine arithmetische Erweiterung, die die Variable i mit 1 XOR verknüpft . ich kann anfangs unset sein; In diesem Fall wird es als 0 behandelt .

    • Der Wagenrücklauf setzt den Cursor wieder an den Zeilenanfang.

    • ›?9hFängt die Maus in unterstützten Terminals ein. Mit jedem Klick werden sechs Zeichen an das Terminal gesendet←[Mbxy , wobei das ESC-Byte ( 0x1b ) dargestellt wird. ←[Gibt eine Escape-Sequenz, Mdie Maus, bdie Schaltfläche ( 0x20 + die Schaltflächennummer), xdie x- Koordinate des Klicks ( 0x20 + Koordinate) und ydie y- Koordinate an.

    • -sn6Schaltet das Lesen stumm (die Mauseingabe wird nicht an STDERR weitergegeben) und stoppt nach dem Lesen von genau 6 Bytes. Die Eingabe wird in der Variablen REPLY gespeichert , die Ausgabe interessiert uns jedoch nicht.

Schließlich, sobald Lese beendet (nach genau einem Mausklick), :ruft rekursiv selbst, eine Endlosschleife eingeben.

Schaffung und Anrufung

$ echo $':()(read -p$[i^=1]\r\x9b?9h -sn6\n:);:' > checkbox.sh
$ xxd -c 17 -g 1 checkbox.sh
0000000: 3a 28 29 28 72 65 61 64 20 2d 70 24 5b 69 5e 3d 31  :()(read -p$[i^=1
0000011: 5d 0d 9b 3f 39 68 20 2d 73 6e 36 0a 3a 29 3b 3a 0a  ]..?9h -sn6.:);:.
$ LANG=en_US xterm -e bash checkbox.sh

Ausgabe

Screencast


Ich habe selbst an einer ähnlichen Lösung gearbeitet (obwohl in einer anderen Sprache, die mich zum Aufgeben zwang, weil ich ohne Zeilenvorschub keine Möglichkeit fand, Eingaben zu machen). Eine wahrscheinliche Verbesserung: Ändern 1000hin 9h(der Unterschied besteht darin, dass 1000hsowohl das Drücken als auch das Loslassen der 9hMaus und nur das Loslassen der Maus behandelt werden). Dies kann Änderungen an anderer Stelle im Code erforderlich machen oder auch nicht.

@ ais523 Ich habe das versucht, aber zumindest mein Terminal-Emulator (Konsole) scheint es nicht zu unterstützen. Kennen Sie eine, die das tut?
Dennis

gnome-terminalscheint zu funktionieren, das habe ich zum Testen benutzt (edit: aber ich glaube nicht, dass es ein 1-Byte-CSI unterstützt). xtermsollte auch funktionieren und ist möglicherweise einfacher zu installieren, wenn Sie ein KDE-System haben. (Ich habe das gerade selbst getestet; es funktioniert mit, \x1b[aber nicht mit \x9baus irgendeinem Grund, möglicherweise im Zusammenhang mit meinen Stty-Einstellungen und nicht mit dem Terminal selbst.)

@ ais523 Ich habe xterm. Ich werde nachsehen, wann ich wieder an meinem PC bin.
Dennis

8
Ich liebe , wie es wird :)aus :(bis zum Ende
Andras Deak

22

Verarbeitung, 78 66 65 63 61 Bytes

2 Bytes gespart dank @TuukkaX durch Verwendung von -a%2anstelle vona%2*-1

2 Bytes gespart dank @TuukkaX mit a=-a

int a=1;void draw(){background(a);}void mousePressed(){a=-a;}

Das Kontrollkästchen wechselt zwischen Schwarz und Weiß.

Erläuterung

int a=1;                   //the variable that contains the state of the checkbox
void mousePressed(){a=-a;} //if the mouse is pressed, change the sign of a

Jetzt gibt es viele andere Alternativen, wie die Verwendung einer if-Anweisung, um dies zu verarbeiten, aber dann wird es seltsam und ändert ständig den Hintergrund, während die Maus gedrückt wird. Ich habe es zuerst versucht mouseButton, aber dann brauche ich mehr Bedingungen und Code, der viel ausführlicher wird.

Um nun für mousePressed()immer aufgerufen zu werden (andernfalls würde es einfach aufhören, nachdem das Programm gerade gestartet wurde), benötigen wir eine draw()Funktion.

void draw(){               //loop infinitely
  background(a);           //set the sketch's background to -a%2
  //if a ==  1, the background colour is set to almost black
  //if a == -1, the background colour is set to white
}

Bildbeschreibung hier eingeben


Ein kleineres Kontrollkästchen wäre 90 Bytes (das Kontrollkästchen befindet sich in der oberen linken Ecke, damit wir einige Mausbedingungen entfernen können):

int a=1;void draw(){fill(a);rect(0,0,8,8);}void mousePressed(){if(mouseX<9&mouseY<9)a=-1;}

2
Intelligente Verwendung der Verarbeitungsmethode zum Akzeptieren einzelner Ganzzahlen als Graustufenfarben!
FlipTack

@FlipTack Es scheint, dass Weiß auch ausgedrückt werden kann alsfill(-1)
Kritixi Lithos

1
Ich habe eine Idee. Initialisiere aauf 1 statt auf 0. Ändere a++auf a=-a, was -a%2gerade ergibt a. Dies schaltet azwischen 1 und -1 um. Ich weiß jedoch nicht, welche Farbe 1 erzeugt.
Yytsi

@ TuukkaX Yup es funktioniert. color(1)produziert, #010101die sehr nah an schwarz ist
Kritixi Lithos


20

Unix-Shell (+ x11-apps), 3 Bytes

Haftungsausschluss

Die Antwort unten ist langweilig, grenzwertig und "fühlt sich betrogen an" (zumindest für mich).

Es scheint jedoch keine der Herausforderungsregeln "wie geschrieben" oder "Standardlücken" zu verletzen, also poste ich es.

(Wenn Sie eine bestimmte Regel angeben können, die verletzt wird, kommentieren Sie sie bitte!)

Golf gespielt

xgc

Das Programm xgc demonstriert verschiedene Funktionen der X-Grafikprimitive.

Der xgc- Bildschirm ist tatsächlich mit verschiedenen Kontrollkästchen gefüllt:

Bildbeschreibung hier eingeben

und "Sticky Buttons" (die sich nach diesen Herausforderungsregeln als Kontrollkästchen qualifizieren):

Bildbeschreibung hier eingeben


20

GitHub Flavored Markdown - 6 Bytes

- [ ] 

(Es gibt ein Leerzeichen)

Im Kern: überprüfen / nicht überprüfen


Stellen Sie sicher, dass dies mit der zweiten Hälfte des ersten Satzes übereinstimmt: "Schreiben Sie ein Programm, das ein Kontrollkästchen mit zwei Status erstellt, mit dem Benutzer mit der Maus interagieren können ."
Manatwork

1
Ja, wenn Sie es in eine Liste einfügen und die Liste erstellen (für "Kompilierung"), können Sie damit interagieren.
Axel

Interessant. Vielen Dank @ Ax31. Ich habe nie Geister benutzt.
Manatwork

1
Mit "Github Flavored Markdown" hätte ich nicht gerechnet.
Jonas Schäfer



14

Python REPL, 45 Bytes

from tkinter import*
Checkbutton(Tk()).pack()

Ich nehme nicht an CG teil und lese diese Posts auch nicht oft. Es überrascht mich jedoch sehr, dass Sie externe Module verwenden dürfen. Betrügt das nicht? Ich weiß nicht, wie viele Bytes der Tk-Quellcode enthält, aber sollten diese Bytes wirklich nicht zu Ihrer Byteanzahl hinzugefügt werden?
FMaz

1
@Krazor tkinterist eine Standardbibliothek für Python (aber selbst wenn es nicht so wäre, müsste ich nur Python REPL + tkinter deklarieren). Dies bedeutet, dass ich seine Funktionen durch einfaches Importieren nutzen kann. Die Strafe, die Sie vorschlagen, ist vergleichbar mit der Aufforderung an Benutzer, die Anzahl der Bytes in der Quelle der Sprache, in der Sie schreiben, in die Byteanzahl aufzunehmen. Hier können alle Sprachen oder Module miteinander konkurrieren, solange sie zuvor geschrieben und öffentlich veröffentlicht wurden Die Herausforderung wurde veröffentlicht.
Blau

Okay, danke für die Klarstellung.
FMaz

14

GeoGebra , 10 Bytes

Checkbox[]

Eingetragen in die Eingabeleiste.

Hier ist ein GIF der Ausführung:

Programmausführung


7
Whoah, GeoGebra. Ich erinnere mich daran. Es ist eine Weile her.
Nic Hartley

Ich weiß, dass dies kein Thema ist, aber gehst du zum Waterloo Collegiate Institute? Nur aus Neugier, basierend auf Ihrem Namen. Ich bin kein Stalker, keine Sorge :)
HyperNeutrino


11

HTML mit JavaScript - 136 124 120 115 113 111 109 79 Bytes

<p style=height:20;border:solid onClick=t=this;t.innerHTML=(t.e=!t.e)?'x':''>

-2 mit Dank an @KritixiLithos

Reduziert auf 79 nach fantastischem Golfen von @Jan. Obwohl die neue Version den Anforderungen entspricht, habe ich aus beruflichen Gründen die alte Version beibehalten.

Die Verwendung von Built-Ins ist zwar durchaus zulässig, aber es hat mir mehr Spaß gemacht, meine eigenen von Grund auf neu zu erstellen. Getestet mit Chrome und Firefox. border:solidgibt es für die IE-Kompatibilität, aber ich weiß nicht, ob es tatsächlich in neueren IE-Versionen benötigt wird - ich habe keinen verfügbaren IE zum Testen.

Das pxin der Höhe ist zugunsten von "Code-Schnipsel ausführen" da, ist also nicht in der "echten" Byteanzahl enthalten. Es funktioniert gut im Browser ohne.

<p style=height:20px;border:solid onClick=t=this;t.innerHTML=(t.e=!t.e)?'x':''>

Vorherige Version:

<p id=d style="width:20px;height:20px;border:solid 1px"onClick="d.innerHTML=d.innerHTML=='x'?'':'x'"align=center>


1
Schaffst du es id=dzu entfernen d=this?
Kritixi Lithos

1
@KritixiLithos - In der Tat kann ich. Danke und gut gesehen :)
ElPedro

1
Sie müssen die Breite nicht einstellen, die Regeln besagen, dass es sich um beliebige Abmessungen handeln kann. Wenn Sie den Status für eine Eigenschaft in speichern, speichern thisSie das Festlegen der ID. Wenn Sie thisin einer Eigenschaft speichern, sparen Sie einige Bytes. Das alignist unnötig. Da die Attributzeichenfolgen keine Leerzeichen enthalten, benötigen Sie keine Anführungszeichen. <p style=height:20px;border:solid onClick=t=this;t.innerHTML=(t.e=!t.e)?'x':''>79 Bytes
Jan

@Jan - Danke! Das Weitenbit ist mein eigener beruflicher Stolz. Wenn ich es nicht einstelle, sieht es hässlich aus und da diese Antwort niemals gewinnen wird und nur als Alternative gepostet wurde, werde ich sie wahrscheinlich dort lassen. Ansonsten ein paar tolle Tipps. Danke vielmals. Wird morgen aktualisiert.
ElPedro

Vielen Dank an Ostern. Der Code wurde aktualisiert, die anderen Bits wurden jedoch vergessen. Es wird spät.
ElPedro

9

Minecraft 1.0.0, 1 Byte

Ein Hebel in Minecraft erfüllt alle Kriterien für ein Kontrollkästchen. Diese Antwort ist nur für ältere Versionen des Spiels gültig, bei denen das Drücken eines Hebels noch umschaltet.

Bildbeschreibung hier eingeben

Bewertung mit der von @Connor O'Brien vorgeschlagenen Byteanzahl.


Ein Unterschied von 3 zwischen zwei Antworten stellt kaum einen Konsens dar oder bricht ihn, aber wenn man bedenkt, dass Conors Antwort ziemlich kontrovers ist (derzeit + 24/10 ) und dass die akzeptierte Antwort überwiegend gut aufgenommen wird ( + 17/0 ), denke ich Letzteres sollte verwendet werden, um Minecraft-Antworten zu erhalten.
Dennis

Es gibt jedoch keine Strukturblöcke in Minecraft 1.0.0
ev3commander

1
Es ist eins nin Conor, übrigens :)
Conor O'Brien

Oder Sie können die linke und rechte Maustaste in einer neueren Version neu
binden

@ ConorO'Brien Ist das nicht 1 block? Warum 1 byte? Ich glaube nicht, dass mc jeden Block als ein Byte speichert ...
RedClover

8

TI-Basic, 15 Bytes

While 1:Shade(0,9:Input :ClrDraw:Input :End

Ziemliech direkt. Das Kontrollkästchen bedeckt ungefähr 40% des Bildschirms und wechselt zwischen Schwarz und Weiß. Wenn diese Option aktiviert ist, sieht der Bildschirm folgendermaßen aus:

Bildschirm


8

Beliebige Version der Windows-Befehlszeile, 3 Byte

(cmd.exe, Batch, Powershell, Start -> Ausführen, was auch immer)

osk

Öffnet die Bildschirmtastatur mit mehreren "Kontrollkästchen" wie Umschalttaste, Strg-Taste, Alt-Taste und Feststelltaste.


7

Oktave, 36 20 Bytes

uicontrol('sty','c')

Dank @LuisMendo 16 Bytes gespart!


1
uicontrol('sty','c')funktioniert auch
Luis Mendo

@ LuisMendo Danke! 1/2 Byte Anzahl gespart!
rahnema1

7

KV Lang , 8 Bytes

CheckBox

Bildbeschreibung hier eingeben


Unter der Annahme einer wirklich einfachen Python-Umgebung kann kv lang sogar ausgeführt werden:

from kivy.app import runTouchApp
from kivy.lang import Builder
runTouchApp(Builder.load_string('CheckBox'))

Dies funktioniert im Grunde genommen, weil CheckBoxein Kivy-Widget in einem kivy.Factoryals jedes Widget aus der Standardbibliothek enthalten ist.

Diese einfache Zeichenfolge erstellt eine Instanz von CheckBoxund da runTouchApperwartet wird, dass ein Widget ausgeführt wird, kann ich sie verwenden Builder.load_string.

Der Hintergrund von load_stringbehandelt im Grunde jede kv-Zeichenfolge und wenn eine einzelne Instanz eines Widgets definiert ist (z. B. CheckBox), wird es zu einer Root- Widget-Position erhöht , zum Beispiel:

Application
    openGL Window
        root widget(mostly layout)
            main tree
            and some widgets
            ...

7

SmileBASIC, 49 Bytes

@L
O=T
TOUCH OUT T,,
X=T<O!=X
KEY 1,""[X]GOTO@L

und sind ein leeres Kästchen und ein Häkchen in der Schriftart von SB.
Aktivieren Sie das Kontrollkästchen durch Berühren des Bildschirms (entspricht dem Klicken mit der Maus am ehesten).

Bildbeschreibung hier eingeben Bildbeschreibung hier eingeben

Betrügende Antworten:

0 Bytes:

(Die Bildschirmtastatur verfügt über Schaltflächen, die wie Kontrollkästchen funktionieren, z. B. die Feststelltaste und die Einfügetaste.)

14 Bytes:

EXEC"SYS/SBGED

Öffnet den eingebauten Grafikeditor, der über mehrere kästchenähnliche Schaltflächen verfügt


Das ist einfach genial, obwohl ich nicht wirklich verstehe, was die vierte Zeile tut. Könntest du erklären?
snail_

T<Oist wahr, wenn Sie aufhören, den Bildschirm zu berühren, und !=wird als logisches XOR verwendet. X=X XOR (O && !T)
12. Mai,

7

C #, 124 120 Bytes

4 Bytes dank grabthefish gespart.

Kontrollkästchen aktiviert und nicht aktiviert hinweis: aufgrund von bearbeitungen stellt das bild nicht genau dar, was der code macht, die "checkBox1" wird nicht mit dem aktuellen code angezeigt.

using System.Windows.Forms;class P{static void Main(){var a=new Form();a.Controls.Add(new CheckBox());a.ShowDialog();}}

ungolfed: using System.Windows.Forms; class P{ static void Main(){ var a=new Form(); a.Controls.Add(new CheckBox()); Application.Run(a); a.ShowDialog(); } }


Wenn Sie dazu auf meta nichts gefunden haben, fragen Sie auf meta danach.
Matthew Roh

Sie können die Räume in loswerden var a = new Form();.
Clismique

@ Qwerp-Derp Ich habe sie zum Zählen entfernt, ich habe nur das Falsche eingefügt, danke.
Samstag,

Sie könnten verwenden a.ShowDialog();, um ein paar Bytes zu speichern
Grabthefish

danke @grabthefish, obwohl c # immer noch zu Java verliert :(
satibel


6

HTML mit JavaScript, 46 33 28 Bytes

<body onclick=innerHTML^=1>0

v2

<body onclick=this.innerHTML^=1>0

v1

<body onclick=t=this;t.innerHTML=t.e=!t.e||''>

Dies ist eine Variante der Antwort von @ ElPedro: Erstellen Sie eine Checkbox . Mit Hilfe von @Albert Renshaw auf 28 Byte heruntergekommen. Es könnte weiter reduziert werden, aber das würde es identisch mit Create a Checkbox machen

Der gesamte Anwendungsbereich ist anklickbar. Es wird 0im offZustand und 1im onZustand angezeigt . Probieren Sie es unter https://jsbin.com/nuhetiyocu/1/edit aus


1
Hier ist eine ordentliche Variation mit 39 Bytes. <body onclick=t=this;t.innerHTML^=t?1:0Die 16-Pixel-Regel zwischen Zustandsänderungen steht jedoch zur Debatte.
Albert Renshaw

38<body onclick=this.innerHTML^=this?1:0
Albert Renshaw

1
Oh nein mit Ihrer Hilfe , die ich auf 33 bin unten schon :)
Jan

1
28<body onclick=innerHTML^=1>0
Albert Renshaw

1
Da sich nun immer ein Wert im Container befindet, kann dieser von bodyin ein anderes Element geändert werden . Aber ich gerade bemerkt , dass es gleich zu einer anderen Antwort würde codegolf.stackexchange.com/questions/109155/create-a-checkbox/... so dass ich es nur verlasse wie
Jan

6

Powershell v5 +, 94 Bytes

($a=[Windows.Forms.Form]::new()).Controls.Add([Windows.Forms.Checkbox]::new());$a.ShowDialog()

Bildbeschreibung hier eingeben Bildbeschreibung hier eingeben

Das ist ziemlich schrecklich, aber ich kann die Anweisungen mit Add-Typeoder nicht kürzer bekommen, using namespaceund die Variable ist erforderlich, da ich das Objekt erneut verwenden muss, um das Formular Controls.Add()anzuzeigen , und nichts Nutzbares zurückgibt.

ShowDialog Auf meinem System muss die Box nach dem Ausführen dieses Befehls interaktiv sein. Andernfalls wird das Formular eingefroren.

auch System.Windows.Forms.Formkann nur verkürzt werden , Windows.Forms.Formbevor (zumindest mein eigenes) System stoppt Auto es in einer frischen Sitzung abgeschlossen wird .


Nett! Möglicherweise möchten Sie hinzufügen, dass hierfür Version 5+ erforderlich ist.
Briantist

@briantist aktualisiert, danke.
Colsw

6

Excel VBA, 38 32 31 29 Bytes

Direktfensterfunktion, die ein Kontrollkästchen mit den Werten height = 9 und width = 9 in die Zelle A1auf dem ersten Blatt des aktiven Excel VBA-Projekts einfügt

Sheet1.CheckBoxes.Add 0,0,9,9

-6 Danke an pajonk für das Ersetzen [A1],[A1],9,9durch0,0,9,9

-1 zum Ersetzen Sheets(1)durch[Sheet1]

-2 für die Realisierung der oben war dumm und Sheet1stattdessen mit


Scheint, dass 1,1,9,9als Argumente auch funktioniert.
Pajonk

1
Sie brauchen das nicht Sheet(1)., Sie können dies schnell genug in Excel CheckBoxesausführen, aber es ist Teil des aktiven
Arbeitsblatts

@ Mr.Burns Ich habe dies geprüft, aber ohne direkt auf ein Arbeitsblattobjekt zu verweisen, gibt die CheckBoxes.AddMethode den Fehler "Objekt erforderlich" aus
Taylor Scott

@TaylorScott Sie haben Recht, ich habe den Code in ein Tabellenmodul und nicht in ein normales Modul
eingefügt

4

VBA (Word), 74.57 Bytes

-17 Dank an Taylor Scott

Sub a()
f = a.FormFields.Add(Selection.Range, 71)
End Sub

Der Dateiname des Dokuments sollte a sein.


1
Sie können den Wert wdFieldFormCheckBoxdurch 71(den ganzzahligen Wert der wdFieldFormCheckBoxKonstanten) ersetzen, um 17 Byte zu sparen
Taylor Scott

Ich denke, Sie können die Zeilenumbrüche für -2 Bytes entfernen.
DevRicher

4

Mops, 20 Bytes

input(type=checkbox)

Abgesehen davon, was ich zähle, ist es 23. Wenn Sie die Anführungszeichen entfernen, funktioniert es immer noch unter Firefox und Chrome (kann nicht auf IE getestet werden) und würde bei 21 eintreffen. In diesem Fall würde ich es als Verbesserung des Beispiels betrachten und es daher als gültig betrachten.
ElPedro

@heonlygusti - in der Tat, aber ohne die Zitate hätte ich upvoted :-) Übrigens, die downvote war nicht ich.
ElPedro

Ich hätte hochgestimmt, wenn es nicht jene Zitate gegeben hätte, die nicht benötigt werden.
NightSkyCode

@theonlygusti überhaupt nicht. Versuche es.
NightSkyCode

4

Clojure, 201 195 145 127 Bytes

(ns c(:require[quil.core :as q]))(def a(atom nil))(q/defsketch b :draw #(q/background(if@a 0 99)):mouse-clicked #(swap! a not))

-6 Bytes, indem Sie die Notwendigkeit für loswerden m/fun-mode.

-50 Bytes durch Entfernen der Optionen :setupund :size, da diese standardmäßig vorhanden und in non- nicht erforderlich sind fun-mode. Außerdem wurde der unnötige Import für Middleware entfernt.

-18 Bytes dank nur @ ASCII. Auf "kleinere" Farben geändert und unnötiges Leerzeichen vor dem Dereferenzierungsoperator ( @) entfernt.

Erstellt eine Quil- Skizze (eine Clojure-Bibliothek, die eine Ebene über der Verarbeitung bereitstellt). Daher muss die Quil-Bibliothek ausgeführt werden.

(ns bits.golf.checkbox
  (:require [quil.core :as q]))

; Mutable global variable to hold the toggle state
(def a (atom nil))

(q/defsketch b
         ; Draw the background color to be either black or red depending on the toggle state.
         :draw #(apply q/background (if @a [0 0 0] [255 0 0]))

         ; Negate the state on mouse click
         :mouse-clicked #(swap! a not))

Bildbeschreibung hier eingeben

Bildbeschreibung hier eingeben


Können Sie 255 nicht durch 99 ersetzen? Außerdem würde ich versuchen, Leerzeichen vor / nach Symbolen zu entfernen und zu prüfen, ob es immer noch funktioniert
ASCII

@ ASCII-only ja, ich könnte. Es machte eine hässliche Farbe, obwohl iirc, und aus irgendeinem Grund habe ich das zu der Zeit priorisiert. Und nein, das ist so viel Platz, wie ich leider entfernen kann.
Carcigenicate

@ Nur ASCII Das Problem ist, dass Symbole fast jedes Zeichen enthalten können. Die einzigen "sicheren Nachbarn", um die Sie Leerzeichen entfernen können, sind also Klammern oder Anführungszeichen. Zum Glück ist dies ein lispeln, das erstere ist ziemlich weit verbreitet.
Carcigenicate

Hmm vielleicht [0 0 99]dann? (irgendeine Art von dunkelblau)
Nur ASCII

@ Nur ASCII Eigentlich denke ich, dass ich die Nullen fallen lassen kann, wenn ich darüber nachdenke. Ich denke Quil füllt die Front automatisch mit 0s auf, wenn der Vektor zu kurz ist. Wenn ich mich erinnere, werde ich es reparieren. Danke, dass Sie mich zum Nachdenken gebracht haben.
Carcigenicate

4

Operation Flashpoint- Skriptsprache, 273 Byte

So zeigen Sie das Kontrollkästchen an:

createDialog"b"

Aber zuerst muss definiert werden:

Speichern Sie Folgendes in einer Datei description.extim Missionsordner:

class b{idd=999;movingEnable=1;class controls{class c{idc=457;x=0.1;y=0.1;w=0.1;h=0.1;text="";action="if(ctrlText 457=={})then{ctrlSetText[457,{V}]}else{ctrlSetText[457,{}]}";type=1;style=2;colorText[]={1,1,1,1};font="tahomaB36";sizeEx=0.1;}}}

Das Kontrollkästchen in Aktion:


3

AutoIt , 78 Bytes

GUICreate(0)
GUISetState(GUICtrlCreateCheckbox(0,0,0))
Do
Until GUIGetMsg()=-3

Öffnet ein maximiertes Fenster, das wie jedes andere Fensterfenster geschlossen werden kann. Die Maximierung und ... Top-Qualität ist ein Nebeneffekt des Golfspiels.

Bildbeschreibung hier eingeben


Wie würde ich das unter Linux ausführen?
Dkudriavtsev

@wat wine AutoIt3.exe script.au3, wo die script.au3Datei diesen Code enthält.
mınxomaτ

3

Python, 62 Bytes

from tkinter import*
a=Tk()
Checkbutton(a).pack()
a.mainloop()
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.