Anonymní profil Jaroslav Šolc – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Anonymní profil Jaroslav Šolc – Programujte.comAnonymní profil Jaroslav Šolc – Programujte.com

 

Příspěvky odeslané z IP adresy 82.117.139.–

HTML / XHTML › Jak dostat proměnnou javascr…
5. 9. 2018   #381476

#6 gna
Dík, právě jsem na to přišel. Stačilo řádek   document.getElementById("element").innerHTML =      (priklad);

napsat až pod řádek s vložením hodnoty do proměnné příklad 

<span id="element"></span>  si ho pak odtud "vytáhne" a umístí před okénko. 

.....

var nahodne = Math.floor(Math.random() * polozky.length);

       document.getElementById("demo").innerHTML = (polozky[nahodne]);
       y=nahodne;

       priklad = polozky.splice(y,1); 

       document.getElementById("element").innerHTML =      (priklad);

......

HTML / XHTML › Jak dostat proměnnou javascr…
5. 9. 2018   #381473

#3 gna
Výborně, teď jen jak tam místo textu dostanu část pole "polozky[nahodne]" nebo proměnnou řetězec "priklad" ze scriptu v myFunction() ?   Dík

<span id="prazdny-element"></span>
<script>
  var el = document.getElementById("prazdny-element");
  el.innerHTML = "Jak vedle okna dostat místo tohoto textu příklad?";
</script>
</script>

.......

function myFunction() {
        pocitadlo = pocitadlo + 1;
        if (pocitadlo == 24) document.write("Zobrazili jste 23 příkladů"+", avšak počítadlo dosáhlo hodnoty: " + pocitadlo);
        else {
        
var nahodne = Math.floor(Math.random() * polozky.length);

       document.getElementById("demo").innerHTML = (polozky[nahodne]);
 

       y=nahodne;
       priklad = polozky.splice(y,1); 

HTML / XHTML › Jak dostat proměnnou javascr…
5. 9. 2018   #381472

#2 Jerry
Dík, ale ten document.getElementById  v javascriptu mi právě ten příklad vypíše nad to okno 

<input type="number" id="myNumber" value="">  

.......

document.getElementById("demo10").innerHTML =      (priklad);

HTML / XHTML › Jak dostat proměnnou javascr…
5. 9. 2018   #381468

Chtěl bych vlevo vedle okna "Potvrď zadané číslo" mít vypsaný obsah hodnoty "priklad" , takto se mi vypisuje vždy nad to okno:

viz <button onclick="zadaniFunction()">Potvrď zadané číslo</button>    níže

Dík za radu

<!DOCTYPE html>
<html>
<body>
<meta charset="UTF-8">
<button onclick="myFunction()">Vyber příklad</button>

<p id="demo"></p>
<p id="demo2"></p>
<p id="demo3"></p>
<p id="demo4"></p>
<p id="demo5"></p>
<p id="demo6"></p>
<p id="demo7"></p>
<p id="demo8"></p>
<p id="demo9"></p>
<p id="demo10"></p>
<p id="demo11"></p>

<!-- <p>Počítadlo je nastaveno na 24, aby mi to ukázalo 23 příkladů.  </p> */  --> 

<!-- <input type="text" name="jmeno" size="12" placeholder="vložit proměnnou?" />   --> 

<div id="prazdny-element"></div>
<script>
  var el = document.getElementById("prazdny-element");
  el.innerHTML = "jak vedle okna dostat příklad?";
</script>

<input type="number" id="myNumber" value="">  
<button onclick="zadaniFunction()">Potvrď zadané číslo</button>

<script>

var pocitadlo = 0;
var y = 0;
var polozky = ["0 . 2 = ","1 . 2 = ","2 . 2 = ","3 . 2 = ","4 . 2 = ","5 . 2 = ","6 . 2 = ","7 . 2 = ","8 . 2 = ","9 . 2 = ","10 . 2 = ","0 : 2 = ","2 : 1 = ","2 : 2 = ","4 : 2 = ","6 : 2 = ","8 : 2 = ","10 : 2 = ","12 : 2 = ","14 : 2 = ","16 : 2 = ","18 : 2 = ","20 : 2 = "];
var priklad = [];
var vypocet = 0;


function myFunction() {
        pocitadlo = pocitadlo + 1;
        if (pocitadlo == 24) document.write("Zobrazili jste 23 příkladů"+", avšak počítadlo dosáhlo hodnoty: " + pocitadlo);
        else {
        
var nahodne = Math.floor(Math.random() * polozky.length);

       document.getElementById("demo").innerHTML = (polozky[nahodne]);
    /*   <input type="number" name="quantity" min="0" max="100">; */

       y=nahodne;
       priklad = polozky.splice(y,1); 
       var priklad_z=priklad; /* proměnná "priklad" by byla okamžitě rozcupována příkazy "parseInt" a .substr */
       var priklad_zz=polozky[nahodne];
       var priklad_zzz=polozky[nahodne];
       var int = parseInt(priklad_z, 10); 
      /* var znamenko = priklad_zz.strcharArt(3); */
      /* var str = "Hello Word"; */
       var res = priklad_zz.substr(2, 3);   /* zde se zjistí znaménko z příkladu, ale bude se muset ještě použít funkce na vymazání mezer */ 
       var pozice = res.indexOf(".");
      if (pozice == -1) var vypocet = int / 2; else var vypocet = int * 2;
      
       var posledni = priklad_zzz.substr(4,2);
       document.getElementById("demo2").innerHTML = (polozky);
       document.getElementById("demo3").innerHTML = (y);
       document.getElementById("demo4").innerHTML = (priklad);
       document.getElementById("demo5").innerHTML = ("První číslo je : " + int);
       document.getElementById("demo6").innerHTML = ("Na konci je : " + res);
       document.getElementById("demo7").innerHTML = ("poslední číslo je : " + posledni);
       document.getElementById("demo8").innerHTML = ("Pozice tečky je : " + pozice);
       document.getElementById("demo9").innerHTML = ("Správný výsledek je : " + vypocet);
       document.getElementById("demo10").innerHTML =      (priklad);
       }
    

function zadaniFunction() {
    var zadane_cislo = document.getElementById("myNumber").value;
    
    document.getElementById("demo11").innerHTML = ("Zadali jste výsledek: " + zadane_cislo);
    
}


</script>

</body>
</html>

Java › Proč polozky.splice(y) neode…
4. 9. 2018   #381460

#3 MilanL
Dík moc. 

Java › Proč polozky.splice(y) neode…
4. 9. 2018   #381457

#1 JTS#1 JTS

Snažil jsem se to obejít vytvořením pole "sloucene", nicméně nevím, jak ho zaměnit za pole "položky"

polozky=sloucne;  nefunguje

<!DOCTYPE html>
<html>
<body>

<button onclick="myFunction()">Vyber příklad</button>

<p id="demo"></p>
<p id="demo2"></p>
<p id="demo3"></p>
<p id="demo4"></p>
<p id="demo5"></p>
<p id="demo5"></p>

<p>Počítadlo je nastaveno na 24, aby mi to ukázalo 23 příkladů.  </p>

<script>

var pocitadlo = 0;
var y = 0;
var polozky = ["0 . 2 = ","1 . 2 = ","2 . 2 = ","3 . 2 = ","4 . 2 = ","5 . 2 = ","6 . 2 = ","7 . 2 = ","8 . 2 = ","9 . 2 = ","10 . 2 = ","0 : 2 = ","2 : 1 = ","2 : 2 = ","4 : 2 = ","6 : 2 = ","8 : 2 = ","10 : 2 = ","12 : 2 = ","14 : 2 = ","16 : 2 = ","18 : 2 = ","20 : 2 = "];
var odstranene = [];
var ke_slouceni = [];
var sloucene = [];

function myFunction() {
        pocitadlo = pocitadlo + 1;
        if (pocitadlo == 24) document.write("Zobrazili jste 23 příkladů"+", avšak počítadlo dosáhlo hodnoty: " + pocitadlo);
        else {
        
var nahodne = Math.floor(Math.random() * polozky.length);

       document.getElementById("demo").innerHTML = (polozky[nahodne]);
      
       odstranene = polozky.splice(nahodne);
       ke_slouceni = odstranene.splice(1); 
       sloucene = polozky + ke_slouceni;
       
       document.getElementById("demo2").innerHTML = (polozky);
       document.getElementById("demo3").innerHTML = (y);
       document.getElementById("demo4").innerHTML = (odstranene);
       document.getElementById("demo4").innerHTML = (ke_slouceni);
       document.getElementById("demo5").innerHTML = (sloucene);}
    

</script>

Zde se tvrdí, že lze odstranit jednotlivou položku z pole

https://www.tvorba-webu.cz/javascript/pole.php

V následujícím kódu to ale odebere i všechny položky  za položkou s indexem y. Nechápu  ....

Dík za vysvětlení

<!DOCTYPE html>
<html>
<body>

<button onclick="myFunction()">Vyber příklad</button>

<p id="demo"></p>
<p id="demo2"></p>
<p id="demo3"></p>

<p>Počítadlo je nastaveno na 24, aby mi to ukázalo 23 příkladů.  </p>

<script>

var pocitadlo = 0;
var y = 0;
var polozky = ["0 . 2 = ","1 . 2 = ","2 . 2 = ","3 . 2 = ","4 . 2 = ","5 . 2 = ","6 . 2 = ","7 . 2 = ","8 . 2 = ","9 . 2 = ","10 . 2 = ","0 : 2 = ","2 : 1 = ","2 : 2 = ","4 : 2 = ","6 : 2 = ","8 : 2 = ","10 : 2 = ","12 : 2 = ","14 : 2 = ","16 : 2 = ","18 : 2 = ","20 : 2 = "];

function myFunction() {
        pocitadlo = pocitadlo + 1;
        if (pocitadlo == 24) document.write("Zobrazili jste 23 příkladů"+", avšak počítadlo dosáhlo hodnoty: " + pocitadlo);
        else {
        
var nahodne = Math.floor(Math.random() * polozky.length);

       document.getElementById("demo").innerHTML = (polozky[nahodne]);
       y=nahodne
       polozky.splice(y); 
       document.getElementById("demo2").innerHTML = (polozky);
       document.getElementById("demo3").innerHTML = (y);}
    

</script>

</body>
</html>

Java › Proč polozky.splice(y) neode…
4. 9. 2018   #381456

Zde se tvrdí, že lze odstranit jednotlivou položku z pole

https://www.tvorba-webu.cz/javascript/pole.php

V následujícím kódu to ale odebere i všechny položky  za položkou s indexem y. Nechápu  ....

Dík za vysvětlení

<!DOCTYPE html>
<html>
<body>

<button onclick="myFunction()">Vyber příklad</button>

<p id="demo"></p>
<p id="demo2"></p>
<p id="demo3"></p>

<p>Počítadlo je nastaveno na 24, aby mi to ukázalo 23 příkladů.  </p>

<script>

var pocitadlo = 0;
var y = 0;
var polozky = ["0 . 2 = ","1 . 2 = ","2 . 2 = ","3 . 2 = ","4 . 2 = ","5 . 2 = ","6 . 2 = ","7 . 2 = ","8 . 2 = ","9 . 2 = ","10 . 2 = ","0 : 2 = ","2 : 1 = ","2 : 2 = ","4 : 2 = ","6 : 2 = ","8 : 2 = ","10 : 2 = ","12 : 2 = ","14 : 2 = ","16 : 2 = ","18 : 2 = ","20 : 2 = "];

function myFunction() {
        pocitadlo = pocitadlo + 1;
        if (pocitadlo == 24) document.write("Zobrazili jste 23 příkladů"+", avšak počítadlo dosáhlo hodnoty: " + pocitadlo);
        else {
        
var nahodne = Math.floor(Math.random() * polozky.length);

       document.getElementById("demo").innerHTML = (polozky[nahodne]);
       y=nahodne
       polozky.splice(y); 
       document.getElementById("demo2").innerHTML = (polozky);
       document.getElementById("demo3").innerHTML = (y);}
    

</script>

</body>
</html>

Java › Rozpor mezi počítadlem a reá…
3. 9. 2018   #381450

#4 JTS
Tak mě napadá, co hlavně nevím, kde tohle mohu spouštět tak, aby mi to ukázalo i chybu ve skriptu? Python jsem spouštěl v konzoli, tady nevím a prohlížeč mi asi nic neukáže.

Dík

Java › Rozpor mezi počítadlem a reá…
3. 9. 2018   #381443

#3 MilanL
Dík moc, s tím počítadlem je to můj renonc, zapomněl jsem nakonec změnit předmět, když jsem se rozhodl, že se vlastně potřebuju jen zeptat na tu metodu změny obsahu dokumentu. Původně mi to totiž dosáhlo podmínky 23 příkladů při počítadle 43, a vůbec reagovalo to jen na liché číslo, při sudém nikdy nebyla podmínka splněna. Tato záhada se objasnila, jakmile jsem chtěl zprávu odeslat, teprve tehdy jsem si všiml, že jsem tam přičítání 1 k pocitadlo napsal omylem 2x jednou na začátek a podruhé na konec funkce a bylo po záhadě ..... 

Dík i za info k metodě pro změnu obsahu.

Java › Rozpor mezi počítadlem a reá…
31. 8. 2018   #381412

Pokouším se poprvé vytvořit něco, co dokáže spustit prohlížeč. Jde nějak v následujícím kódu použít "document.write" aniž by zmizelo tlačítko? Příkaz "document.getElementById("demo").innerHTML" jsem z toho důvodu převzal z jedné ukázky na webu, ale v podstatě nevím, k čemu vlastně slouží. Je tam vůbec nutné " <p id="demo"></p> a následné "("demo")" uvnitř příkazu? Díky za vysvětlení

<!DOCTYPE html>
<html>
<body>

<button onclick="myFunction()">Vyber příklad</button>

<p id="demo"></p>

<p>Počítadlo je nastaveno na 24, aby mi to ukázalo 23 příkladů.  </p>

<script>

var pocitadlo = 0;

function myFunction() {
        pocitadlo = pocitadlo + 1;
        if (pocitadlo == 24) document.write("Zobrazili jste 23 příkladů"+", avšak počítadlo dosáhlo hodnoty: " + pocitadlo);
        else {
        var polozky = ["0 . 2 = ","1 . 2 = ","2 . 2 = ","3 . 2 = ","4 . 2 = ","5 . 2 = ","6 . 2 = ","7 . 2 = ","8 . 2 = ","9 . 2 = ","10 . 2 = ","0 : 2 = ","2 : 1 = ","2 : 2 = ","4 : 2 = ","6 : 2 = ","8 : 2 = ","10 : 2 = ","12 : 2 = ","14 : 2 = ","16 : 2 = ","18 : 2 = ","20 : 2 = "];
var nahodne = Math.floor(Math.random() * polozky.length);
    document.getElementById("demo").innerHTML = (polozky[nahodne]);}
    

</script>

</body>
</html>

Python › Jak nastavit prodlevu v Tkin…
9. 8. 2018   #381168

Nakonec jsem zjistil, že stačí u proměnné seznam místo těchto ( )  dát tyto a nemusím nic převádět [ ]. Podařilo se mi ještě vytvořit funkci pro výběr písmen, která je potřeba procvičit znovu. Jen po výběru se ještě musí zvolit - Zapsat písmena (nevím, jak to udělat, aby se po zavření okna zapsala automaticky). 

Jediné, čemu opravdu nerozumím, je proč někdy při dvojkliku myší, tento vyjde jakoby naprázdno - písmeno z listboxu nezmizí (viz. volanafunkce() a vytvor (param). Totéž se dělo pokud jsem měl verzi, kde jsem využíval funkci pro odstranění již rozpoznaných písmen klik (param). V tom případě to hlásí tuto chybu:

 python pismena-NV.py
Exception in Tkinter callback
Traceback (most recent call last):
  File "/usr/lib64/python2.7/lib-tk/Tkinter.py", line 1541, in __call__
    return self.func(*args)
  File "pismena-NV.py", line 35, in vytvor
    index=listbox.curselection()[0]
IndexError: tuple index out of range

Zde je celý kód, včetně řádků, které jsem původně používal pro odladění, díky za jakýkoli postřeh:

# -*- coding: utf-8 -*-
from Tkinter import*
import time
import random
import os

seznam=['M','m','L','l','S','s','P','p','A','a','Á','á','O','o','Ó','ó','E','e','É','e','I','i','Í','í','N','n','Š','š','D','d','Z','K','k','B','b','C','c','R','r','U','u','Ú','ú','Ů','ů','Č','č']

#seznam=['a','á','b','c','č','d','ď','e','é','ě','f','g','h','ch','i','j','k','l','m','n','ň','o','ó','p','q','r','ř','s','š','t','ť','u','ú','ů','v','w','x','y','z','ž']  # stačí tu mít [] a seznam půjde upravovat

i=0
novy_seznam=[]

def nova_pismena():
    global seznam
    seznam=novy_seznam
    
    # print seznam


def vsechna_pismena():
    global seznam
    seznam=['M','m','L','l','S','s','P','p','A','a','Á','á','O','o','Ó','ó','E','e','É','e','I','i','Í','í','N','n','Š','š','D','d','Z','K','k','B','b','C','c','R','r','U','u','Ú','ú','Ů','ů','Č','č']


def focusWidget(udalost):
    udalost.widget.focus_set()
    
def vytvor(param):
    global novy_seznam
    global seznam
    global i
    index=listbox.curselection()[0]
   
    nove_pismeno=seznam[index]
    novy_seznam.append(nove_pismeno)
    del seznam[index]
    # print novy_seznam
    listbox.delete(ANCHOR)

def klik(param):
    
    global seznam
    #print listbox.curselection()[0]
    index=listbox.curselection()[0]
    #print index
    del seznam[index]
    #print seznam
    listbox.delete(ANCHOR)
 
def volanafunkce():
    global listbox
    mazaci_okno = Tk()
    mazaci_okno.geometry("100x200+170+160")
    mazaci_okno.option_add('*Font', 'serif 20')
    listbox = Listbox(mazaci_okno)
    listbox.bind( "<1>", None)
    #listbox.bind("<Double-Button-1>", klik)  # metoda se volá až po uvolnění myši
    listbox.bind("<Double-Button-1>", vytvor)
    #listbox.bind("<Enter>", focusWidget)
    listbox.pack()
    listbox.insert(END,'M','m','L','l','S','s','P','p','A','a','Á','á','O','o','Ó','ó','E','e','É','e','I','i','Í','í','N','n','Š','š','D','d','Z','K','k','B','b','C','c','R','r','U','u','Ú','ú','Ů','ů','Č','č')
    #listbox.insert(END,'a','á','b','c','č','d','ď','e','é','ě','f','g','h','ch','i','j','k','l','m','n','ň','o','ó','p','q','r','ř','s','š','t','ť','u','ú','ů','v','w','x','y','z','ž')

#b = Button(hlavni, text="Smazat!",command=lambda : listbox.delete(ANCHOR))
#b.pack()

    f = open('testfile.txt', 'w')
    z = str(listbox.get(0,END))
    f.write(z)
    f.close()

hlavni = Tk()

w = Label(hlavni, text=u"Písmena abecedy", fg="red")  # zůstalo jen proto, že jinak global w is not defined

nabidka = Menu(hlavni)
hlavni.config(menu=nabidka)

menuSoubor = Menu(nabidka)
nabidka.add_cascade(label="Vyber písmena", menu=menuSoubor)
menuSoubor.add_command(label=u"Výběr", command=volanafunkce)
menuSoubor.add_command(label=u"vsechna_pismena", command=vsechna_pismena)
menuSoubor.add_command(label="Zapiš nová písmena", command=nova_pismena)

helpMenu = Menu(nabidka)
nabidka.add_cascade(label=u"Nápověda", menu=helpMenu)
helpMenu.add_command(label=u"O aplikaci", command=volanafunkce)

exp = IntVar() 

c = Checkbutton(hlavni, text="rychleji", variable=exp,onvalue=1000, offvalue=2000) # offvalue hodnotu nepřiřadí, zůstává 0, dokud se po zaškrtnutí neodškrtne

# cislo=exp.get()  číslo si další čast programu nezapamatuje
c.pack()

# hlavni.geometry('{}x{}'.format(150, 100))

hlavni.geometry("150x120+10+10") # + 10 měním tu pozici vůči oknu s písmeny, ale nevím jak přesně


ram = Frame(hlavni)
ram.pack()


text=Text()
text.pack()


text.tag_config("modre", foreground="blue", underline=0)
text.insert(END, "(c) J. Šolc", "modre")

var = IntVar()
button = Button(hlavni, text="Spusť písmena", command=lambda: var.set(1))
button.place(relx=.5, rely=.5, anchor="c")
#button.grid(column=1, row=1)

button.wait_variable(var)


#okno.geometry('{}x{}'.format(150, 100)) #zde se určí velikost okna
okno=Tk()
okno.geometry("150x100+160+160") # měním tím pozici vůči oknu Spusť

w.pack()


def add_pismeno():
   global seznam
   global novy_seznam
   global w
   global cislo
   global pismeno
  
   if seznam:
      pismeno=random.choice(seznam)
   #vypis=list(seznam) #nutné převést seznam na výpis - anebo seznam rovnou zavést jako vypis - viz pismena-list.py
   #vypis.remove(pismeno) 
      seznam.remove(pismeno)
   
   else:
       pass
    
   
   #if not vypis:
   #   pass
   #else:
   #  seznam=tuple(vypis) #výpis se převede zpět na seznam
   if w:
      w.pack_forget()
    
      w = Label(okno, text=pismeno, font=("Helvetica", 40))
      w.pack()
      cislo=exp.get() # exp si zapamatoval, proto přiřazuji číslo až zde
   
   # print cislo
   # print "variable is", exp.get() # řádky pro odladění
   if cislo==0:
       cislo=2000  # nastavení pro pomalý běh
   else:
       pass

   okno.after(cislo,add_pismeno)
   
   print len(seznam)
   #print pismeno

    
add_pismeno()
   

tlKonec = Button(ram, text=u"KONEC", fg="red", command=sys.exit) #exit zavře obě okna
tlKonec.pack(side=LEFT)
tlKonec.grid(column=2, row=2)

okno.mainloop()

Python › Jak nastavit prodlevu v Tkin…
31. 7. 2018   #381080

#13 JTS
#12 gna
S tím listem to nefungovalo, ale přidal jsem podmínku a "tuple index out of range" není ...

def add_pismeno():
   global seznam
   global w
   
  
   
   pismeno=random.choice(seznam)
   vypis=list(seznam) #nutné převést seznam na výpis
   vypis.remove(pismeno) 
   if not vypis:
      pass
   else:
      seznam=tuple(vypis) #výpis se převede zpět na seznam
   if w:
      w.pack_forget()
   w = Label(okno, text=pismeno, font=("Helvetica", 20))
   w.pack()
   okno.after(1000,add_pismeno)
   
 
add_pismeno()  

Python › Jak nastavit prodlevu v Tkin…
31. 7. 2018   #381076

#12 gna
Dík, (c)  je jen takovej vtípek. Dík vyzkouším to, z nějaké diskuse jsem možná blbě pochopil, že ze seznamu nemůžu nic odebírat, proto je nutné převádět to na list... zkusím to nepřevádět na seznam ..., dík za připomínku

Python › Jak nastavit prodlevu v Tkin…
30. 7. 2018   #381071

#10 MilanL
Dík všem, kód teď vypadá následovně- viz dole - celý kód, abych ho přeložil i pro PC bez pythonu a s Windows XP, musel jsem v tlačítku KONEC přiřadit místo exit, sys.exit, protože exit ani quit neznal zase modul py2exe, který potřeboval python 2.7, který mi běžel ve Virtuálních Windows 2000, přes které jsem to compiloval. 

Dělá mi ještě starost chybové hlášení po doběhnutí programu, nicméně nevím, jak přesně zajistit, aby index nebyl "out of range". Pod tím zasílám ještě celý kód. Čeká mě ještě zjistit, jak přes okno zadat do okno.after místo pevné hodnoty proměnnou - nejlépe měnící se spojitě přes posuvník, a jak umožnost na začátku vybrat písmena do seznamu - nejlépe pomocí zaškrtávátek v okně .... 

Ještě jednou dík za předchozí i ev. následné nápady 

localhost ~]$ python pismena.py 
Exception in Tkinter callback
Traceback (most recent call last):
  File "/usr/lib64/python2.7/lib-tk/Tkinter.py", line 1541, in __call__
    return self.func(*args)
  File "/usr/lib64/python2.7/lib-tk/Tkinter.py", line 592, in callit
    func(*args)
  File "pismena.py", line 53, in add_pismeno
    pismeno=random.choice(seznam)
  File "/usr/lib64/python2.7/random.py", line 277, in choice
    return seq[int(self.random() * len(seq))]  # raises IndexError if seq is empty
IndexError: tuple index out of range
[sas-labyrint@localhost ~]$ 

celý kód je zde:

# -*- coding: utf-8 -*-
from Tkinter import*
import time
import random
import os

seznam=('a','á','b','c','č','d','ď','e','é','ě','f','g','h','ch','i','j','k','l','m','n','ň','o','ó','p','q','r','ř','s','š','t','ť','u','ú','ů','v','w','x','y','z','ž')

hlavni = Tk()

okno=Tk()

# hlavni.geometry('{}x{}'.format(150, 100))

hlavni.geometry("150x120+10+10") # + 10 měním tu pozici vůči oknu s písmeny, ale nevím jak přesně


ram = Frame(hlavni)
ram.pack()


text=Text()
text.pack()

text.tag_config("modre", foreground="blue", underline=0)
text.insert(END, "(c) J. Šolc", "modre")

var = IntVar()
button = Button(hlavni, text="Spusť písmena", command=lambda: var.set(1))
button.place(relx=.5, rely=.5, anchor="c")
#button.grid(column=1, row=1)

button.wait_variable(var)


#okno.geometry('{}x{}'.format(150, 100)) #zde se určí velikost okna

okno.geometry("150x100+160+160") # měním tím pozici vůči oknu Spusť

w = Label(okno, text=u"Písmena abecedy", fg="red") # zůstalo jen proto, že jinak global w is not defined

w.pack()


def add_pismeno():
   global seznam
   global w
  
   if not seznam:
      okno.quit()
   pismeno=random.choice(seznam)
   vypis=list(seznam) #nutné převést seznam na výpis
   vypis.remove(pismeno) 
   seznam=tuple(vypis) #výpis se převede zpět na seznam
   if w:
      w.pack_forget()
   w = Label(okno, text=pismeno, font=("Helvetica", 20))
   w.pack()
   okno.after(1000,add_pismeno)

add_pismeno()  

tlKonec = Button(ram, text=u"KONEC", fg="red", command=sys.exit) #exit zavře obě okna
tlKonec.pack(side=LEFT)
tlKonec.grid(column=2, row=2)

okno.mainloop()

Python › Jak nastavit prodlevu v Tkin…
27. 7. 2018   #381044

#5 MilanL
Dík dokonce to dělá to, co jsem původně zamýšlel - původně zobrazené písmeno se změní v jiné. Trasoval jsem to ve Spyder, ale to okno "Písmena abecedy" zmizí, jakmile se dostane za řádek 14 "def add_pismeno():" tak to okamžitě skočí na řádek 30 "ad.pismeno()" a pak na řádek 31 "okno.mainloop()" - tady okno "Písmena abecedy" zmizí a je nahrazeno oknem, kde se střídají písmena. /Když to spustíš, vidíš jen toto okno/ . Také se přechodem z řádku 9 na ř. 12 "w.pack()" vytvoří zbytečně prázdné okno, které v dalším kroku zmizí a je nahrazeno oknem "Písmena abecedy".     Jestli já tohle někdy pochopím, jak to tu skáče .......

Každopádně moc dík, mám co upravovat ... nastavím velikost okna pro písmena, pokusím se v "okno.after(1000, ad_pismeno) použít proměnnou, která se nastaví na začátku ..., pokud bych byl veleúspěšný, odstraním prvně vzniklé prázdné okno a nechám písmena měnit se pod nápisem "Písmena abecedy"

Jak jednoduché to bylo v konzoli, tam šel jeden řádek za druhým:

# -*- coding: utf-8 -*-    # umožní české znaky
import time
import random
import os

seznam=('a','b','c','č','d','ď','e','f','g','h','ch','i','j','k','l','m','n','ň','o','p','q','r','ř','s','š','t','ť','u','v','w','x','y','z')

for i in range(1, 34): 
   os.system('clear')   # smaže obrazovku 
   pismeno=random.choice(seznam)
   print(pismeno)
   time.sleep(0.5)
   vypis=list(seznam) #nutné převést seznam na výpis
   vypis.remove(pismeno) 
   seznam=tuple(vypis) #výpis se převede zpět na seznam
   os.system('clear') 

Python › Jak nastavit prodlevu v Tkin…
27. 7. 2018   #381033

#2 MilanL
Taky je to tady, ale nevím jak to převést na moji změnu písmena: http://programujte.com/forum/vlakno/5039-generovani-casovych-udalosti/

Python › Jak nastavit prodlevu v Tkin…
27. 7. 2018   #381032

#2 MilanL
Dík, ale time.sleep nefunguje, program se zastaví, okno se nevytvoří, nelze použít v Tk (je to v mnoha diskuzích např.: https://stackoverflow.com/…ore-it-opens). lze použít jen okno.after(1000,funkce), nicméně pokud w.pack() nadefinuji do funkce, nemění v okně můj program písmeno, zůstane jen u jednoho, místo všech písmen vypíše jen 40 x písmeno jedno.

Chci zajistit výpis abecedy do okna s využitím Tkinter, tak, aby se vypsala v náhodném pořadí - to už níže uvedený kód zvládne - já ale potřebuji, aby za každým písmenem následovala 1s prodleva, než se vypíše další. Dík, nejsem programátor, potřebuji to pro děti na postřehování písmen. Programuji tak, že najdu nějaký program na webu, zjistím jak funguje, pak ho upravuji.

# -*- coding: utf-8 -*-
from Tkinter import*
import time
import random
import os

seznam=('a','á','b','c','č','d','ď','e','é','ě','f','g','h','ch','i','j','k','l','m','n','ň','o','ó','p','q','r','ř','s','š','t','ť','u','ú','ů','v','w','x','y','z')

okno=Tk()

w = Label(okno, text=u"Písmena abecedy", fg="red")
w.pack()

for i in range(1, 40): 
  
   pismeno=random.choice(seznam)
   vypis=list(seznam) #nutné převést seznam na výpis
   vypis.remove(pismeno) 
   seznam=tuple(vypis) #výpis se převede zpět na seznam
   w = Label(okno, text=pismeno, font=("Helvetica", 10))
   
#sem potřebuji něco, co zdrží další proběhnutí cyklu o 1 sekundu

   w.pack()

okno.mainloop()

Jaroslav Šolc
Python › Jak nastavit prodlevu v Tkin…
27. 7. 2018   #381028

Chci zajistit výpis abecedy do okna s využitím Tkinter, tak, aby se vypsala v náhodném pořadí - to už níže uvedený kód zvládne - já ale potřebuji, aby za každým písmenem následovala 1s prodleva, než se vypíše další. Dík, nejsem programátor, potřebuji to pro děti na postřehování písmen. Programuji tak, že najdu nějaký program na webu, zjistím jak funguje, pak ho upravuji.

# -*- coding: utf-8 -*-
from Tkinter import*
import time
import random
import os

seznam=('a','á','b','c','č','d','ď','e','é','ě','f','g','h','ch','i','j','k','l','m','n','ň','o','ó','p','q','r','ř','s','š','t','ť','u','ú','ů','v','w','x','y','z')

okno=Tk()

w = Label(okno, text=u"Písmena abecedy", fg="red")
w.pack()

for i in range(1, 40): 
  
   pismeno=random.choice(seznam)
   vypis=list(seznam) #nutné převést seznam na výpis
   vypis.remove(pismeno) 
   seznam=tuple(vypis) #výpis se převede zpět na seznam
   w = Label(okno, text=pismeno, font=("Helvetica", 10))
   
#sem potřebuji něco, co zdrží další proběhnutí cyklu o 1 sekundu

   w.pack()

okno.mainloop()

 

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý