To Blujacker :
Diky za radu, spustil jsem tridu jako samostatne vlakno a GUI ozilo :)
Příspěvky odeslané z IP adresy 80.188.28.–
Ahoj,
delam jednoduchy programek v Pythonu - Tkinter GUI, ktery se bude starat o zapinani vypinani vzdalenych pocitacu. Pri tvorbe GUI jsem narazil na mensi problem, kdy v ramci mainloopu zavolam programek, ktery blokuje zbytek GUI dokud neskonci. Zkousel jsem experimentovat s metodou after, ale vzdy v momente kdy volana funkce byla casove narocnejsi, zamrzlo cele GUI dokud procedura neskoncila.
Udelal jsem jako priklad jednoduche udelatko s tlacitky start stop, kdy pri startu se spusti ping (parametry jsou zvolene pro tento pripad tak aby to timeoutovalo) Do budoucna chci spoustet celou tridu, ktera bude casove narocnejsi..
Uvedomuji si ze ve smycce mainloop dochazi k vnitrni smycce, ktera brzdi cely program..
Otazka zni. Jakym zpusobem bych mel resit takove moduly v gui, aby nezablokovaly cely program ? V programovani jsem zacatecnik a nejsem si jisty jestli to jde v ramci tkinteru a metody after - popr neceho jineho. (podprocesy,vlakna..)
Ukazkovy kod:
from Tkinter import *
import time
import subprocess
class Gui(Frame):
def __init__(self, parent=None, **kw):
Frame.__init__(self, parent, kw)
self._start=False
# Smycka, ktera brzdi mainloop.
def Cyklus(self):
if self._start:
print 'bezim'
self.after(1000,self.Cyklus)
p=subprocess.call('ping 1.1.1.1')
def Start(self):
self._start=True
print "stikl jsem tlacitko start"
self.Cyklus()
def Stop(self):
self._start=False
print 'skoncil jsem'
def main():
hlavni =Tk()
sw = Gui(hlavni)
sw.pack(side=TOP)
Button(hlavni, text='Start', command=sw.Start).pack(side=LEFT)
Button(hlavni, text='Stop', command=sw.Stop).pack(side=LEFT)
hlavni.mainloop()
if __name__ == '__main__':
main()
Diky, za kazdou radu Honza
Ahoj, resim problem jak naplnit jList kdyz mam nactene data ve vectoru. Data do vectoru taham z externi databaze pomoci JDBC. Mam zakladni JForm a nanej jsem pretahnul jList. Pokousel jsem se to tam vlozit pres model, ale tim ze je to vygenerovano na tvrdo tak nemuzu menit vlastnosti jListu. Prikladam okomentovany kod. Dekuji za rady jak vyresit tenhle problem.
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
Employees emp = new Employees();
try {
emp.vypis();
//nacteni dat do vectoru
Vector <tabEmployees> pom = emp.data;
for(int i =0; i < pom.size(); i++)
{
//pokud si to vytisknu na konzole tak to jede, vypise to jak ma
System.out.println(pom.elementAt(i).getID()+", "+pom.elementAt(i).getPrijmeni()+", "+pom.elementAt(i).getJmeno());
//kamen urazu, nevim jak to nasipat do jListu. Vypiseto jenom: tis01.tabEmployees@bf7190 a to presne tolikrat, kolik je zaznamu ve vectoru.
jList1.setListData(pom);
}
}
catch(Exception e){}
}
To Pebble :
Ahoj, stale mi to nejde... Predvedu jak postupuju:
Ve Form1 mam udalost:
private void menu_Pridej_Click(object sender, EventArgs e)
{
Form2 f2 = new Form2(); //vytvorim instanci f2
f2.ShowDialog(); // zobrazim jako dialog, dle Chrastyho vyse v prispevku to tak psal....
}
pak ve Form2 mam tuhle udalost:
private void button1_Click(object sender, EventArgs e)
{
Form2 f2 = new Form2(); //vytvorim instanci
f2.Hide (); // a chci ji zavrit.
}
Ve vysledku se chci dostat zpatky na Form1. Ale nejak to nejde....
Ahoj, mam problem s TextBoxem. Mam jeden textbox kde mam enabled multiline. Pak mam dva textboxy kde pisu nejaky text a chtel bych po stisku tlacitka vypsat ty dve hodnoty pekne pod sebe. Muzete poradit?
Resim to takhle:
textBox4.Text = textBox1.Text;
textBox4.Text = textBox2.Text;
Tohle mi ale prepisuje ten prvni textbox. Nevite jak mam odradkovat aby se to vypsalo pod sebou?
Dekuji.
Dobry den,
mam jeden maly problem. Potreboval bych poradit s Formulari a jejich spravou. Mam Form1, kde mam na horni liste menu (Soubor, upravy, atd...) a podmenu v souboru mam Form2. Nevim ale jak mam naprogramovat aby po kliknuti na Form2 v menu se mi zobrazil tenhle formular (Form2). Nechci zavrit Form1, jenom at je v pozadi, a Form2 at je aktivni a muzu vnem pracovat.
Vedel by nekdo poradit?
Dekuji.