n° 219
Novembre 2017
Dicembre 12, 2017, 11:26:13 *
Benvenuto! Accedi o registrati.
Hai dimenticato l'e-mail di attivazione?

Accesso con nome utente, password e durata della sessione
Notizia:
 
   Indice   Linux Windows Techassistance Gameassistance videogame hardware Aiuto Ricerca Agenda Downloads Accedi Registrati  


* Messaggi recenti
Messaggi recenti
Pagine: [1]   Vai giù
  Stampa  
Autore Discussione: CONTROLLI DATA ACCESS  (Letto 6682 volte)
0 utenti e 1 Utente non registrato stanno visualizzando questa discussione.
Pandenico
Jr. Member
**

Karma: +0/-7
Scollegato Scollegato

Messaggi: 83


Mostra profilo E-mail
« inserita:: Aprile 17, 2015, 06:33:37 »

Salve,

cortesemente, mi sapete dire come si possono creare in WXPYTHON o TKINTER o PYQT, i controlli, bindingnavigator, bindingsource, datanavigator, relativi alla gestione dei database.

Come faccio a trovarli ad es. come ho trovato il wx.Frame e altri.
Grazie


Saluti.
Registrato
michele.p
Administrator
Full Member
*****

Karma: +9/-2
Scollegato Scollegato

Messaggi: 586


Mostra profilo
« Risposta #1 inserita:: Aprile 17, 2015, 06:45:41 »

In sostanza vuoi aggiungere i vari widget per creare una tabella, navigare i contenuti, modificare una tabella etc?
Registrato
Pandenico
Jr. Member
**

Karma: +0/-7
Scollegato Scollegato

Messaggi: 83


Mostra profilo E-mail
« Risposta #2 inserita:: Aprile 17, 2015, 10:08:20 »

Sì, esattamente.

Grazie
Registrato
michele.p
Administrator
Full Member
*****

Karma: +9/-2
Scollegato Scollegato

Messaggi: 586


Mostra profilo
« Risposta #3 inserita:: Aprile 17, 2015, 10:42:17 »

Non è proprio una cosa che si possa riportare in due righe.  Linguaccia

Penso che questo documento, al di là del database utilizzato, possa esserti di aiuto per costruire ciò che ti serve passo dopo passo, sbaglio?  Sorriso

http://www.python-sqlite-database.com/Python_SQLite_Databases.odt
Registrato
Pandenico
Jr. Member
**

Karma: +0/-7
Scollegato Scollegato

Messaggi: 83


Mostra profilo E-mail
« Risposta #4 inserita:: Aprile 18, 2015, 11:56:59 »

Grazie  Occhiolino

Ma in sostanza ed es. in DataNavigator piuttosto che il Dataset in in WxPython o ptqt come li creo?

Gli altri controlli li creo ad es. andando  a vedere qui http://www.python.it/wiki/show/qttutorial/ ed è chiaro.

Ma quelli per la gestione dei database come posso crearli?

Grazie ancora.
Registrato
michele.p
Administrator
Full Member
*****

Karma: +9/-2
Scollegato Scollegato

Messaggi: 586


Mostra profilo
« Risposta #5 inserita:: Aprile 18, 2015, 03:15:04 »

Ma per DataNavigator intendi il pannello dove visualizzi, nello specifico, le tabelle di un DB?
Registrato
Pandenico
Jr. Member
**

Karma: +0/-7
Scollegato Scollegato

Messaggi: 83


Mostra profilo E-mail
« Risposta #6 inserita:: Aprile 18, 2015, 06:40:01 »

Sì.
Registrato
michele.p
Administrator
Full Member
*****

Karma: +9/-2
Scollegato Scollegato

Messaggi: 586


Mostra profilo
« Risposta #7 inserita:: Aprile 18, 2015, 09:45:56 »

E' riportato in quella lunga guida, ma devi arrivare almeno a pagina 40. :-P

Come potrai notare si fa uso di wx.Panel, wx.TextCtrl etc.
Registrato
michele.p
Administrator
Full Member
*****

Karma: +9/-2
Scollegato Scollegato

Messaggi: 586


Mostra profilo
« Risposta #8 inserita:: Aprile 18, 2015, 09:51:39 »

P.S.: Nei miei appunti ho questo sorgente (allegato aquesto messaggio), ma non ricordo dove l'ho preso.  Linguaccia
C'è ancora l'autore , ma non ricordo da dove l'ho scaricato. Ti è sufficiente copiarlo e lanciarlo.

Codice:
#!/usr/bin/env python

#-----------------------------------------------------------------------
# developer : toufic zaarour , Byblos-Lebanon

# for any suggestions or improvements, my gmail is : touficmc@gmail.com
#-----------------------------------------------------------------------

import wx
import wx.grid
import gettext
import os
import sqlite3
import datetime

cwd = os.path.abspath(os.curdir)

class MyFrame(wx.Frame):
    def __init__(self, *args, **kwds):
        kwds["style"] = wx.DEFAULT_FRAME_STYLE
        wx.Frame.__init__(self, *args, **kwds)
        self.frame_1_menubar = wx.MenuBar()
        wxglade_tmp_menu = wx.Menu()
        wxglade_tmp_menu.Append(1, _("Create sqlite3 DataBase"), "", wx.ITEM_NORMAL)
        self.frame_1_menubar.Append(wxglade_tmp_menu,_("DataBase Configuration"))
       
        wxglade_tmp_menu = wx.Menu()
        wxglade_tmp_menu.Append(2, _("Message"), "", wx.ITEM_NORMAL)
        self.frame_1_menubar.Append(wxglade_tmp_menu,_("About"))

        self.SetMenuBar(self.frame_1_menubar)
        self.__set_properties()
        self.__do_layout()
        self.Bind(wx.EVT_MENU, self.open_dialog, id=1)
        self.Bind(wx.EVT_MENU,self.open_dialog1,id =2)


    def __set_properties(self):
        self.SetTitle(_("Sqlite3 Creator"))
        self.SetSize((555, 444))
        self.SetBackgroundColour(wx.Colour(255, 255, 255))


    def __do_layout(self):
        sizer_1 = wx.BoxSizer(wx.VERTICAL)
        self.SetSizer(sizer_1)
        self.Layout()

    def open_dialog(self, event):
        MyDialog1(self).Show()

    def open_dialog1(self,event):
        wx.MessageBox("This App is made for you and for all developpers who use sqlite3 and want to create fast databases and data tables\n\nEnjoy...!")


class MyDialog1(wx.Dialog):
    def __init__(self, *args, **kwds):
        kwds["style"] = wx.DEFAULT_DIALOG_STYLE
        wx.Dialog.__init__(self, *args, **kwds)
        self.label_27 = wx.StaticText(self, -1, _(" Create Your Data Tables :"))
        self.label_25 = wx.StaticText(self, -1, _(" File/Data/Table"))
        self.txtFileName = wx.TextCtrl(self, -1, "")
        self.txtDataName = wx.TextCtrl(self, -1, "")
        self.txtDataTable = wx.TextCtrl(self, -1, "")
        self.grid_1 = wx.grid.Grid(self, -1, size=(1, 1))
        self.bnt_add = wx.Button(self, -1, _("Add Column"))
        self.bnt_remove = wx.Button(self, -1, _("Remove Column"))
        self.bnt_create = wx.Button(self, -1, _("Create DataBase"))
        self.bnt_reset = wx.Button(self, -1, _("Reset Grid"))
        self.txtDataFileOutput = wx.TextCtrl(self, -1, "", style=wx.TE_READONLY)

        self.__set_properties()
        self.__do_layout()

        self.Bind(wx.EVT_BUTTON, self.cl_add_col, self.bnt_add)
        self.Bind(wx.EVT_BUTTON, self.clk_remove_col, self.bnt_remove)
        self.Bind(wx.EVT_BUTTON, self.clk_Create_db, self.bnt_create)
        self.Bind(wx.EVT_BUTTON, self.clk_reset_grid, self.bnt_reset)


    def __set_properties(self):
        self.SetTitle(_("DataBase Creator"))
        self.SetSize((555, 444))
        self.txtFileName.SetMinSize((100, 27))
        self.txtDataName.SetMinSize((100, 27))
        self.txtDataTable.SetMinSize((100, 27))
        self.grid_1.CreateGrid(1, 2)
        self.grid_1.SetColLabelValue(0, _("Name"))
        self.grid_1.SetColSize(0, 200)
        self.grid_1.SetColLabelValue(1, _("Type"))
        self.grid_1.SetColSize(1,200)
        self.bnt_add.SetMinSize((200, 29))
        self.bnt_remove.SetMinSize((200, 29))
        self.bnt_create.SetMinSize((200, 29))
        self.bnt_reset.SetMinSize((200, 29))
        self.txtDataFileOutput.SetMinSize((400, 30))

    def __do_layout(self):
        sizer_7 = wx.BoxSizer(wx.VERTICAL)
        grid_sizer_10 = wx.GridSizer(2, 2, 0, 0)
        grid_sizer_8 = wx.GridSizer(1, 4, 0, 0)
        sizer_7.Add(self.label_27, 0, 0, 0)
        grid_sizer_8.Add(self.label_25, 0, wx.ALIGN_CENTER_VERTICAL, 0)
        grid_sizer_8.Add(self.txtFileName, 0, wx.ALIGN_CENTER_VERTICAL, 0)
        grid_sizer_8.Add(self.txtDataName, 0, wx.ALIGN_CENTER_VERTICAL, 0)
        grid_sizer_8.Add(self.txtDataTable, 0, wx.ALIGN_CENTER_VERTICAL, 0)
        sizer_7.Add(grid_sizer_8, 1, wx.EXPAND, 0)
        sizer_7.Add(self.grid_1, 1, wx.EXPAND, 0)
        grid_sizer_10.Add(self.bnt_add, 0, wx.ALIGN_RIGHT | wx.ALIGN_CENTER_VERTICAL, 0)
        grid_sizer_10.Add(self.bnt_remove, 0, wx.ALIGN_CENTER_VERTICAL, 0)
        grid_sizer_10.Add(self.bnt_create, 0, wx.ALIGN_RIGHT, 0)
        grid_sizer_10.Add(self.bnt_reset, 0, 0, 0)
        sizer_7.Add(grid_sizer_10, 1, wx.EXPAND, 0)
        sizer_7.Add(self.txtDataFileOutput, 0, wx.EXPAND, 0)
        self.SetSizer(sizer_7)
        self.Layout()

    def cl_add_col(self, event):
        self.grid_1.AppendRows(1)
        event.Skip()

    def clk_remove_col(self, event):
        try:
            lst = self.grid_1.GetSelectedRows()[0]
            self.grid_1.DeleteRows(lst,1)
            event.Skip()
        except IndexError:
            wx.MessageBox("You Did Not Select Any Row To Delete")

    def clk_Create_db(self, event):
        try:
            DataColumnsList=[]
            DataTypeList=[]
            DataString=[]
            DataTableName=str(self.txtDataTable.Value)
            ConnectionString=cwd + "/"+(self.txtFileName.Value + "/" + self.txtDataName.Value + ".db")
            RowNum = self.grid_1.GetNumberRows()

            for i in range(0,RowNum):
                DataColumnsList.append(str(self.grid_1.GetCellValue(i,0)))
                DataTypeList.append(str(self.grid_1.GetCellValue(i,1)))
           
            for i in range(len(DataColumnsList)):
                DataString.append(DataColumnsList[i]+ " " + DataTypeList[i])
           
            elem= ",".join(DataString)
            CreateQuery = ("""CREATE TABLE """ + DataTableName + """(%s)"""%elem)

            if not os.path.isfile("CreationLog.txt"):
                f=open("CreationLog.txt","w")
           
            with open("CreationLog.txt","r+") as NewLog:
                OldLog=NewLog.read()
                NewLog.seek(0)
                NewLog.write(OldLog + "\nCreated on "+str(datetime.date.isoformat(datetime.datetime.now())) + " in '"+ ConnectionString + "' ,Used Query : "+ CreateQuery+"\n")
               
               
            if not os.path.exists(self.txtFileName.Value):
                os.makedirs(self.txtFileName.Value)
            else:
                wx.MessageBox("The Folder Already Exists, but you can add to it data tables!")
           
            cnn = sqlite3.connect(ConnectionString)
            cursor=cnn.cursor()
            cursor.execute(CreateQuery)
            cnn.commit
            cnn.close()
           
            self.txtDataFileOutput.Value=("A Data File Named "+self.txtDataName.Value+".db Was Created in "+ self.txtFileName.Value)
       
        except OSError:
            wx.MessageBox("The Grid Is Empty!")
        event.Skip()

    def clk_reset_grid(self, event):
        r=self.grid_1.GetNumberRows()
       
        for i in range(0,r):
            self.grid_1.DeleteRows(1,i)
       
        for c in range(0,2):
            self.grid_1.SetCellValue(0,c,"")
       
        self.txtFileName.Value=""
        self.txtDataName.Value=""
        self.txtDataTable.Value=""
        self.txtDataFileOutput.Value=""
        event.Skip()

if __name__ == "__main__":
    gettext.install("app")
    app = wx.PySimpleApp(0)
    wx.InitAllImageHandlers()
    frame_1 = MyFrame(None, wx.ID_ANY, "")
    app.SetTopWindow(frame_1)
    frame_1.Show()
    app.MainLoop()
Registrato
Pandenico
Jr. Member
**

Karma: +0/-7
Scollegato Scollegato

Messaggi: 83


Mostra profilo E-mail
« Risposta #9 inserita:: Aprile 19, 2015, 05:11:12 »

Grazie!  Ghigno

Saluti.
Registrato
Pagine: [1]   Vai su
  Stampa  
 
Vai a:  

Copyright © 2017 Edizioni Master SpA. p.iva : 02105820787

Tutti i diritti di proprietà letteraria e artistica riservati. - Privacy



powered by Simple Machines