| Autor | Správa |
pogrcko
 Užívateľ
 Založený: 23.01.2008 Príspevky: 23
 | Zaslal: Št 18.08.11 11:32 |   |
Zdravim zacal som si pisat maly program. Problem ale je ze ked zadam nazov a dam ulozit stane sa to ze mi ulozi len nieake cisla a vobec nie to co som zadal.
Skuste sa na to poziet. Dakujem
| kód: | import sqlite3
import tkinter
# premenne#
# praca s DB Pripoj sa atd ....#
db = sqlite3.connect("mydbx")
db.commit()
#ak nie je DB tak vytvor
def CreateDB():
db.execute("create table user(name, login)")
db.execute("create table recept(name, ID, struct)")
db.commit()
# Zapis do DB #
# Zapis Name and Login#
def ZapisDB(name,login):
db.execute("insert into user(name, login) values('%s', '%s')" % (name, login))
db.commit()
# Show user #
def Showuser():
vystup = db.execute("select * from user")
for zaznam in vystup:
print (zaznam)
vystup = db.execute("select * from user")
print
for jmeno, prijmeni in vystup:
print (name, login)
db.commit()
# WINDOW HLAVEN OKNA
#hlavne okno
from tkinter import *
hlavne=Tk()
name=Entry(hlavne)
name.pack()
name.focus_set()
login=Entry(hlavne)
login.pack()
login.focus_set()
OK=Button(hlavne, text='Zapis', command=ZapisDB(name,login))
OK.pack()
hlavne.mainloop()
#hlavna cast#
Showuser()
|
Este detail pred prvou inicializaciou je potrebna napisat CreateDB() |
| |
   |
 |
juho
 Zablokovaný užívateľ
 Založený: 16.05.2007 Príspevky: 837
 | Zaslal: Št 18.08.11 14:08 |   |
daj si vypisat retazec pre insert z funkcie zapisDB
a aj ti to vlastne spusti bo mne sa zda ze to je Tkinter napr atd
a ake cisla to tam uklada bo slovo nejake si mozes strcit do trash binu |
| |
   |
 |
coldak
 Skúsený užívateľ
 Založený: 29.10.2008 Príspevky: 936
 | Zaslal: Št 18.08.11 20:20 |   |
| kód: |
name=Entry(hlavne)...
OK=Button(hlavne, text='Zapis', command=ZapisDB(name,login))...
db.execute("insert into user(name, login) values('%s', '%s')" % (name, login))...
|
netrapi ta ze miesto obsahu prvku "name" sa snazis insertnut priamo ten prvok ?
co tak pouzit metodu get() na ziskanie textoveho obsahu prvku "name" ? |
| |
  |
 |
pogrcko
 Užívateľ
 Založený: 23.01.2008 Príspevky: 23
 |
Nerozumim tomu kde je chyba. Pozeral som manual a ked urobim
| kód: | nam=Entry(hlavne)
nam.pack()
nam.focus_set()......
name = nam.get()
|
tak mi hazde.
| kód: | Taceback (most recent call last):
File "C:\Documents and Settings\PLC\Desktop\DBConnector\Main.py", line 57, in <module>
name = nam.get()
File "C:\Python32\lib\tkinter\__init__.py", line 2375, in get
return self.tk.call(self._w, 'get')
_tkinter.TclError: invalid command name ".17014224" |
za zmienku mozno stoji ze pouzivam python 3. Vsetky tie manualy su pre py2 tak tam obcas musim nieco zmenit. |
| |
   |
 |
coldak
 Skúsený užívateľ
 Založený: 29.10.2008 Príspevky: 936
 |
| kód: |
v = StringVar()
nam=Entry(hlavne, textvariable=v)
nam.pack()
nam.focus_set()......
name = v.get()
|
|
| |
  |
 |
pogrcko
 Užívateľ
 Založený: 23.01.2008 Príspevky: 23
 | Zaslal: Po 22.08.11 13:39 |   |
nieako mi to nefunguje. skusil som to prerobit takto
| kód: |
from tkinter import *
def volanafunkcia():
print (add.get())
def hello():
print ("hello")
#grafika
root = Tk()
#velkost okna
velkost = Canvas(root, width=500, height=500)
velkost.pack()
def vloz():
add = StringVar()
vstup = Entry(root, textvariable=add)
vstup.pack()
vstup.focus_set()
tlacitko = Button(root, text="Nacitaj", width=10, command=volanafunkcia, font="ArialNarrow 10")
tlacitko.pack()
menuLista = Menu(root)
menuLista.add_command(label="Add!", command=vloz)
menuLista.add_command(label="Exit!", command=root.destroy)
#zobrazenie menu
root.config(menu=menuLista)
mainloop()
|
ale stale to hadze
| kód: |
Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Python32\lib\tkinter\__init__.py", line 1399, in __call__
return self.func(*args)
File "C:\Documents and Settings\PLC\Desktop\DBConnector\mydbx.py", line 3, in volanafunkcia
print (add.get())
NameError: global name 'add' is not defined |
ked dam funkciu volana funkcia za "grafiku" tak topadne hned. |
| |
   |
 |
coldak
 Skúsený užívateľ
 Založený: 29.10.2008 Príspevky: 936
 | Zaslal: Po 22.08.11 14:22 |   |
no ved v chybe mas jasne napisane | kód: | | NameError: global name 'add' is not defined |
ty si premennu add definoval ako lokalnu premennu vo funkcii vloz() ako chces lokalnu premennu vidiet v inej metode ? |
| |
  |
 |
pogrcko
 Užívateľ
 Založený: 23.01.2008 Príspevky: 23
 | Zaslal: Po 22.08.11 14:57 |   |
no ale ako ju mam zadefinovat?
ked dam na zaciatok kodu add= add.get() tak hadze ze add.get nie je definovane. Ked dam
add = 'none' a dalej dam add=add.get() stale mi to hadze none a nie zadany text. Tak potom kam ju mam zadefinovat? |
| |
   |
 |
coldak
 Skúsený užívateľ
 Založený: 29.10.2008 Príspevky: 936
 | Zaslal: Po 22.08.11 15:12 |   |
a takto si to neskusal ?
| kód: |
from tkinter import *
add = StringVar()
def volanafunkcia():
global add
print (add.get())
def hello():
print ("hello")
#grafika
root = Tk()
#velkost okna
velkost = Canvas(root, width=500, height=500)
velkost.pack()
def vloz():
global add
vstup = Entry(root, textvariable=add)
vstup.pack()
vstup.focus_set()
tlacitko = Button(root, text="Nacitaj", width=10, command=volanafunkcia, font="ArialNarrow 10")
tlacitko.pack()
menuLista = Menu(root)
menuLista.add_command(label="Add!", command=vloz)
menuLista.add_command(label="Exit!", command=root.destroy)
#zobrazenie menu
root.config(menu=menuLista)
mainloop()
|
|
| |
  |
 |
|