I'm playing with a sudoku GUI...just to learn more about python.
I've made 81 'cells'...actually small canvases
Part of my scheme to write the cells (all 81 of them in the gui) to a file (using the the SAVE callback/button), then
restore the gui cells from the contents of the saved file, which depends on knowing the "name" of the cell with the
focus, or one (or more) which have a number.
The print shows .9919624.9990312, but this nunber (name?) does not work in:
cell-name of cell-.create_text(18,18, text = somevar, fill = 'blue' , font = ('arial', 18, 'bold'))
Also, how can I declare a variable outside of the mainloop/callback scheme which would be 'known' to the callbacks?
Thanks,
Norm 5 1849
> Part of my scheme to write the cells (all 81 of them in the gui) to a file (using the the SAVE callback/button), then restore the gui cells from the contents of the saved file, which depends on knowing the "name" of the cell with the focus, or one (or more) which have a number.
The print shows .9919624.9990312, but this nunber (name?) does not work in:
cell-name of cell-.create_text(18,18, text = somevar, fill = 'blue' , font = ('arial', 18, 'bold'))
I'm not entirely sure what you are after here. To me it sounds better to
create names like
"cell%i" % row * column
just for the sake of having different names, but store the cell in a
2-dimensional list called e.g. "cells"
Then accessing the cell at x, y is simply
cells[x][y].create_text(...)
Does that make sense to you? Also, how can I declare a variable outside of the mainloop/callback scheme which would be 'known' to the callbacks?
You can of course go for globals. Beside that, a callback can be
anything callable. That means that you can go for something like this:
class StatefulCallable(obkect):
def __init__(self, some_state):
self.state = some_state
def __call__(self, *args): # I'm not sure what comes with the callback
print "called with args %r and state %r" % (args, self.state)
Then pass an instance of StatefulCallable as callback.
Regards,
Diez en********@hotmail.com wrote: I'm playing with a sudoku GUI...just to learn more about python.
I've made 81 'cells'...actually small canvases
Part of my scheme to write the cells (all 81 of them in the gui) to a file (using the the SAVE callback/button), then restore the gui cells from the contents of the saved file, which depends on knowing the "name" of the cell with the focus, or one (or more) which have a number.
The print shows .9919624.9990312, but this nunber (name?) does not work in:
cell-name of cell-.create_text(18,18, text = somevar, fill = 'blue' ,font = ('arial', 18, 'bold'))
Also, how can I declare a variable outside of the mainloop/callback scheme which would be 'known' to the callbacks?
Thanks, Norm
How about using a dict, something like (untested):
cells = {}
for row in range(1, 10):
.. for column in range(1, 10):
.. cells[(row, column)] = canvas() # or whatever you use to create
a canvas
Then, to put a value in a given cell, you simply to
cell[(row, column)].create_text(...)
André en********@hotmail.com wrote: I'm playing with a sudoku GUI...just to learn more about python.
I've made 81 'cells'...actually small canvases
Part of my scheme to write the cells (all 81 of them in the gui) to a file (using the the SAVE callback/button), then restore the gui cells from the contents of the saved file, which depends on knowing the "name" of the cell with the focus, or one (or more) which have a number.
The print shows .9919624.9990312, but this nunber (name?) does not work in:
cell-name of cell-.create_text(18,18, text = somevar, fill = 'blue' , font = ('arial', 18, 'bold'))
Also, how can I declare a variable outside of the mainloop/callback scheme which would be 'known' to the callbacks?
Thanks, Norm
I guess you are using tkinter.
".9919624.9990312" in tkinter is just a string representation of the
underlying object, in this case a Canvas(). It is not up to a python
programmer to understand exactly what these numbers are. They are used
by Tcl/Tk internally.
Tk objects are not pickleable. Better is to create a datastructure that
can be pickled from info gleaned specifically with the itemcget()
method. Example code is below. See the Pickle/cPickle documentation.
They are very easy to use.
Since you haven't posted any code, I can only guess what you are doing.
But you may want to try variations on the following (read the comments):
from Tkinter import *
# This is how you may want to make a bunch of canvases in a grid.
def make_canvases(parent, rows=9, cols=9, **options):
"""
Pass in rows, cols, and any options the canvases should
require.
"""
cells = []
for i in xrange(rows):
arow = []
for j in xrange(cols):
c = Canvas(parent, **options)
c.grid(row=i, column=j)
arow.append(c)
cells.append(arow)
return cells
def demo():
"""
Tests out our make_canvases() function.
"""
# tkinter stuff--setting up
tk = Tk()
f = Frame(tk)
f.pack(expand=YES, fill=BOTH)
# make the canvases the gui-programmer way
canvases = make_canvases(f, height=25, width=25)
# individual access to canvases (remember that indices start at 0)
canvases[0][0].configure(background='orange')
canvases[7][8].create_text(14, 8, text='Bob',
fill='blue',
font=('arial', 14, 'bold'))
canvases[8][8].create_text(14, 8, text='9,9',
fill='blue',
font=('arial', 14, 'bold'))
# accessing inside loops
for i in xrange(9):
canvases[i][8-i].configure(background='red')
# fun with bindings (see your last question)
# you should study this one!
for i in xrange(9):
for j in xrange(9):
c = canvases[i][j]
c.bind("<Button-1>",
lambda e=None, c=c: c.configure(background='green'))
# getting out info
texts = []
for i in xrange(9):
for j in xrange(9):
c = canvases[i][j]
for t in c.find_all():
try:
text = c.itemcget(t, 'text')
texts.append((i,j,text))
except:
pass
# reporting the got-out info
Label(tk, text="Texts are: %s" % texts).pack(expand=YES, fill=X)
tk.mainloop()
demo()
On Sat, 21 Jan 2006 14:23:49 -0800, James Stroud <js*****@ucla.edu> wrote: en********@hotmail.com wrote: I'm playing with a sudoku GUI...just to learn more about python.
I've made 81 'cells'...actually small canvases
Part of my scheme to write the cells (all 81 of them in the gui) to a file (using the the SAVE callback/button), then restore the gui cells from the contents of the saved file, which depends on knowing the "name" of the cell with the focus, or one (or more) which have a number.
The print shows .9919624.9990312, but this nunber (name?) does not work in:
cell-name of cell-.create_text(18,18, text = somevar, fill = 'blue' , font = ('arial', 18, 'bold'))
Also, how can I declare a variable outside of the mainloop/callback scheme which would be 'known' to the callbacks?
Thanks, Norm
I guess you are using tkinter.
".9919624.9990312" in tkinter is just a string representation of the underlying object, in this case a Canvas(). It is not up to a python programmer to understand exactly what these numbers are. They are used by Tcl/Tk internally.
Tk objects are not pickleable. Better is to create a datastructure that can be pickled from info gleaned specifically with the itemcget() method. Example code is below. See the Pickle/cPickle documentation. They are very easy to use.
Since you haven't posted any code, I can only guess what you are doing. But you may want to try variations on the following (read the comments):
from Tkinter import *
# This is how you may want to make a bunch of canvases in a grid. def make_canvases(parent, rows=9, cols=9, **options): """ Pass in rows, cols, and any options the canvases should require. """ cells = [] for i in xrange(rows): arow = [] for j in xrange(cols): c = Canvas(parent, **options) c.grid(row=i, column=j) arow.append(c) cells.append(arow) return cells
def demo(): """ Tests out our make_canvases() function. """
# tkinter stuff--setting up tk = Tk() f = Frame(tk) f.pack(expand=YES, fill=BOTH)
# make the canvases the gui-programmer way canvases = make_canvases(f, height=25, width=25)
# individual access to canvases (remember that indices start at 0) canvases[0][0].configure(background='orange') canvases[7][8].create_text(14, 8, text='Bob', fill='blue', font=('arial', 14, 'bold')) canvases[8][8].create_text(14, 8, text='9,9', fill='blue', font=('arial', 14, 'bold'))
# accessing inside loops for i in xrange(9): canvases[i][8-i].configure(background='red')
# fun with bindings (see your last question) # you should study this one! for i in xrange(9): for j in xrange(9): c = canvases[i][j] c.bind("<Button-1>", lambda e=None, c=c: c.configure(background='green'))
# getting out info texts = [] for i in xrange(9): for j in xrange(9): c = canvases[i][j] for t in c.find_all(): try: text = c.itemcget(t, 'text') texts.append((i,j,text)) except: pass
# reporting the got-out info Label(tk, text="Texts are: %s" % texts).pack(expand=YES, fill=X) tk.mainloop()
demo()
Thanks for your reply, and those of others...all are helpful. As to the code I wrote (so far), her it is, complete with
some expressions that didn't work too well...:)
Thanks....Norm
#======== Start GUI CODE ======================
from Tkinter import *
import tkFileDialog
fred = Tk() # Notice I have a bias against 'top', 'master', 'root', etc
fred.title(' SUDOKU SCREEN')
#fred.geometry('400x400')
#fred.resizable(0,0)
#------------------------------ Declare 9 frames plus one for the buttons
fr1 = Frame(fred); fr2 = Frame(fred); fr3 = Frame(fred)
fr4 = Frame(fred); fr5 = Frame(fred); fr6 = Frame(fred)
fr7 = Frame(fred); fr8 = Frame(fred); fr9 = Frame(fred)
bfr = Frame(fred, relief = 'raised', borderwidth = 1, pady = 10)
#------------------------------ Set some vars
ind = [3,4,5,12,13,14,21,22,23,27,28,29,33,34,35,36,37,38 ,42,43,44,45,46,47,51,52,53,57,58,59,66,67,68,75,7 6,77]
fr_list = [fr1,fr2,fr3,fr4,fr5,fr6,fr7,fr8,fr9]
can_list = ['can1','can2','can3','can4','can5','can6','can7',' can8','can9']
cell = []
myvar = ''
mykey = 'K'
myadd = 'one'
iy = 0
#------------------------------ Create 9 frames with 9 canvases in each
for fitem in fr_list:
for item in can_list:
item = Canvas(fitem, width = 30, height = 30, borderwidth = 1, relief = 'solid')
item.pack(side = LEFT, fill = BOTH)
cell.append([item, iy, '-']) # List of [IDs, 0 to 80, key text]
iy += 1
#------------------------------ Create some supporting (callback) functions
def clr_scrn():
for iz in range(81):
cell[iz][0].delete(ALL)
def hint():
print 'Hint not implemented yet'
def solve():
print 'Solve not implemented yet'
def get_file():
cell_ID = ""
cell_list = []
root = Tk()
root.withdraw() # do this to remove the "blank screen"
filename = tkFileDialog.askopenfilename()
fp2 = open(filename, 'r+')
for line in fp2:
fp2.close()
def save_file():
cell_num = ""
cell_val = ""
total = ""
iy = 0
root = Tk()
root.withdraw() # do this to remove the "blank screen"
filename = tkFileDialog.asksaveasfilename()
fp1 = open(filename, 'w' )
fp1.close()
def mouse_in(event):
event.widget.config(highlightcolor = 'blue')
event.widget.focus_set()
print 'event', event.widget
def see_key(event):
event.widget.delete(ALL)
if event.keysym in '123456789':
event.widget.create_text(18,18, text = event.keysym, font = ('arial', 18, 'bold'))
else:
event.widget.create_text(18,18, text = '', font = ('arial', 18, 'bold'))
#------------------------------ Create some control buttons
b_new = Button(bfr, text = 'NEW', relief = 'raised', command = clr_scrn ).pack(side = LEFT, padx = 10)
b_open = Button(bfr, text = 'OPEN', relief = 'raised', command = get_file ).pack(side = LEFT, padx = 10)
b_save = Button(bfr, text = 'SAVE', relief = 'raised', command = save_file).pack(side = LEFT, padx = 10)
b_clr = Button(bfr, text = 'CLEAR', relief = 'raised', command = clr_scrn ).pack(side = LEFT, padx = 10)
b_hint = Button(bfr, text = 'HINT', relief = 'raised', command = hint ).pack(side = LEFT, padx = 10)
b_solve = Button(bfr, text = 'SOLVE', relief = 'raised', command = solve ).pack(side = LEFT, padx = 10)
b_exit = Button(bfr, text = 'EXIT', relief = 'raised', command = fred.quit).pack(side = LEFT, padx = 10)
#------------------------------ Now pass everything to the packer
for item in fr_list:
item.pack(side = TOP)
bfr.pack(side = TOP) # Don't forget to add the buttons
#------------------------------ Shade the sub-blocks
for ix in ind:
cell[ix][0].config(bg = 'grey')
#------------------------------ Fill in a few cells just for drill
cell[0][0].create_text(18,18, text = '3', fill = 'black', font = ('arial', 18, 'bold'))
cell[1][0].create_text(18,18, text = '6', fill = 'black', font = ('arial', 18, 'bold'))
cell[2][0].create_text(18,18, text = '9', fill = 'black', font = ('arial', 18, 'bold'))
cell[3][0].create_text(18,18, text = '7', fill = 'black', font = ('arial', 18, 'bold'))
cell[4][0].create_text(18,18, text = '5', fill = 'black', font = ('arial', 18, 'bold'))
cell[5][0].create_text(18,18, text = '8', fill = 'black', font = ('arial', 18, 'bold'))
cell[6][0].create_text(18,18, text = '4', fill = 'black', font = ('arial', 18, 'bold'))
cell[7][0].create_text(18,18, text = '2', fill = 'black', font = ('arial', 18, 'bold'))
cell[8][0].create_text(18,18, text = '1', fill = 'black', font = ('arial', 18, 'bold'))
cell[77][0].create_text(18,18, text = '5', fill = 'blue' , font = ('arial', 18, 'bold'))
for item in cell:
item[0].bind('<Enter>', mouse_in)
item[0].bind('<KeyPress>', see_key)
mainloop() en********@hotmail.com wrote: On Sat, 21 Jan 2006 14:23:49 -0800, James Stroud <js*****@ucla.edu> wrote:
en********@hotmail.com wrote:
I'm playing with a sudoku GUI...just to learn more about python.
I've made 81 'cells'...actually small canvases
Part of my scheme to write the cells (all 81 of them in the gui) to a file (using the the SAVE callback/button), then restore the gui cells from the contents of the saved file, which depends on knowing the "name" of the cell with the focus, or one (or more) which have a number.
The print shows .9919624.9990312, but this nunber (name?) does not work in:
cell-name of cell-.create_text(18,18, text = somevar, fill = 'blue' , font = ('arial', 18, 'bold'))
Also, how can I declare a variable outside of the mainloop/callback scheme which would be 'known' to the callbacks?
Thanks, Norm
I guess you are using tkinter.
".9919624.9990312" in tkinter is just a string representation of the underlying object, in this case a Canvas(). It is not up to a python programmer to understand exactly what these numbers are. They are used by Tcl/Tk internally.
Tk objects are not pickleable. Better is to create a datastructure that can be pickled from info gleaned specifically with the itemcget() method. Example code is below. See the Pickle/cPickle documentation. They are very easy to use.
Since you haven't posted any code, I can only guess what you are doing. But you may want to try variations on the following (read the comments):
from Tkinter import *
# This is how you may want to make a bunch of canvases in a grid. def make_canvases(parent, rows=9, cols=9, **options): """ Pass in rows, cols, and any options the canvases should require. """ cells = [] for i in xrange(rows): arow = [] for j in xrange(cols): c = Canvas(parent, **options) c.grid(row=i, column=j) arow.append(c) cells.append(arow) return cells
def demo(): """ Tests out our make_canvases() function. """
# tkinter stuff--setting up tk = Tk() f = Frame(tk) f.pack(expand=YES, fill=BOTH)
# make the canvases the gui-programmer way canvases = make_canvases(f, height=25, width=25)
# individual access to canvases (remember that indices start at 0) canvases[0][0].configure(background='orange') canvases[7][8].create_text(14, 8, text='Bob', fill='blue', font=('arial', 14, 'bold')) canvases[8][8].create_text(14, 8, text='9,9', fill='blue', font=('arial', 14, 'bold'))
# accessing inside loops for i in xrange(9): canvases[i][8-i].configure(background='red')
# fun with bindings (see your last question) # you should study this one! for i in xrange(9): for j in xrange(9): c = canvases[i][j] c.bind("<Button-1>", lambda e=None, c=c: c.configure(background='green'))
# getting out info texts = [] for i in xrange(9): for j in xrange(9): c = canvases[i][j] for t in c.find_all(): try: text = c.itemcget(t, 'text') texts.append((i,j,text)) except: pass
# reporting the got-out info Label(tk, text="Texts are: %s" % texts).pack(expand=YES, fill=X) tk.mainloop()
demo()
Thanks for your reply, and those of others...all are helpful. As to the code I wrote (so far), her it is, complete with some expressions that didn't work too well...:) Thanks....Norm
#======== Start GUI CODE ======================
from Tkinter import * import tkFileDialog
fred = Tk() # Notice I have a bias against 'top', 'master', 'root', etc
fred.title(' SUDOKU SCREEN') #fred.geometry('400x400') #fred.resizable(0,0)
#------------------------------ Declare 9 frames plus one for the buttons
fr1 = Frame(fred); fr2 = Frame(fred); fr3 = Frame(fred) fr4 = Frame(fred); fr5 = Frame(fred); fr6 = Frame(fred) fr7 = Frame(fred); fr8 = Frame(fred); fr9 = Frame(fred)
Named references are useleless here, especially since you are putting
these frames into a list later. In fact, you really don't need to create
these frames because you can just use grid() to place your
canvases...except if you want resize behavior.
bfr = Frame(fred, relief = 'raised', borderwidth = 1, pady = 10)
This frame you WILL want a named reference for, because you do adress it
by name later. #------------------------------ Set some vars
ind = [3,4,5,12,13,14,21,22,23,27,28,29,33,34,35,36,37,38 ,42,43,44,45,46,47,51,52,53,57,58,59,66,67,68,75,7 6,77] fr_list = [fr1,fr2,fr3,fr4,fr5,fr6,fr7,fr8,fr9]
Better is to eliminate the fr# = Frame(fred) code above and replace this
latter line with:
fr_list = [Frame(fred) for i in xrange(9)]
can_list = ['can1','can2','can3','can4','can5','can6','can7',' can8','can9']
This list is largely unecessary. Can do the same thing with xrange below.
cell = [] myvar = '' mykey = 'K' myadd = 'one' iy = 0
#------------------------------ Create 9 frames with 9 canvases in each
for fitem in fr_list: for item in can_list: item = Canvas(fitem, width = 30, height = 30, borderwidth = 1, relief = 'solid') item.pack(side = LEFT, fill = BOTH) cell.append([item, iy, '-']) # List of [IDs, 0 to 80, key text] iy += 1
1. "for item in can_list" could easily be "for item in xrange(9)", this
would allow you to get rid of the can_list altogether, which will make
your code easier to read and maintain.
2. Are you sure you want to re-bind item here?
#------------------------------ Create some supporting (callback) functions
def clr_scrn(): for iz in range(81): cell[iz][0].delete(ALL)
def hint(): print 'Hint not implemented yet'
def solve(): print 'Solve not implemented yet'
def get_file(): cell_ID = "" cell_list = [] root = Tk() root.withdraw() # do this to remove the "blank screen" filename = tkFileDialog.askopenfilename() fp2 = open(filename, 'r+') for line in fp2: fp2.close()
def save_file(): cell_num = "" cell_val = "" total = "" iy = 0 root = Tk() root.withdraw() # do this to remove the "blank screen" filename = tkFileDialog.asksaveasfilename() fp1 = open(filename, 'w' ) fp1.close()
Instantiating another Tk here can cause difficut to track-down problems
and erratic behavior if another Tk is already instantiated. Are you sure
you want to do this? You do not want 2 Tk's!!
def mouse_in(event): event.widget.config(highlightcolor = 'blue') event.widget.focus_set() print 'event', event.widget
def see_key(event): event.widget.delete(ALL) if event.keysym in '123456789': event.widget.create_text(18,18, text = event.keysym, font = ('arial', 18, 'bold')) else: event.widget.create_text(18,18, text = '', font = ('arial', 18, 'bold'))
Why are you re-binding event.keysym here? Clearer would be just binding
the name keysym. You may not want to mess with event in this case
because this event may get intercepted by another callback, etc.
def see_key(event):
event.widget.delete(ALL)
if keysym in '123456789':
event.widget.create_text(18,18, text = keysym,
font = ('arial', 18, 'bold'))
else:
event.widget.create_text(18,18, text = '',
font = ('arial', 18, 'bold'))
Note: these can now use the make_text() function below. #------------------------------ Create some control buttons
b_new = Button(bfr, text = 'NEW', relief = 'raised', command = clr_scrn ).pack(side = LEFT, padx = 10) b_open = Button(bfr, text = 'OPEN', relief = 'raised', command = get_file ).pack(side = LEFT, padx = 10) b_save = Button(bfr, text = 'SAVE', relief = 'raised', command = save_file).pack(side = LEFT, padx = 10) b_clr = Button(bfr, text = 'CLEAR', relief = 'raised', command = clr_scrn ).pack(side = LEFT, padx = 10) b_hint = Button(bfr, text = 'HINT', relief = 'raised', command = hint ).pack(side = LEFT, padx = 10) b_solve = Button(bfr, text = 'SOLVE', relief = 'raised', command = solve ).pack(side = LEFT, padx = 10) b_exit = Button(bfr, text = 'EXIT', relief = 'raised', command = fred.quit).pack(side = LEFT, padx = 10)
Things like this are much better written:
def button_row(parent, individual_opts, **options):
for text, command in button_opts:
Button(parent, text=text,
command=command,
**options).pack(side = LEFT, padx = 10)
button_opts = (('NEW', clr_scrn),
('OPEN', get_file),
('SAVE', save_file),
('CLEAR', clr_scrn),
('HINT', hint),
('SOLVE', solve),
('EXIT', fred.quit))
button_row(bfr, button_opts, relief='raised')
#------------------------------ Now pass everything to the packer
for item in fr_list: item.pack(side = TOP)
bfr.pack(side = TOP) # Don't forget to add the buttons
#------------------------------ Shade the sub-blocks
for ix in ind: cell[ix][0].config(bg = 'grey')
#------------------------------ Fill in a few cells just for drill
cell[0][0].create_text(18,18, text = '3', fill = 'black', font = ('arial', 18, 'bold')) cell[1][0].create_text(18,18, text = '6', fill = 'black', font = ('arial', 18, 'bold')) cell[2][0].create_text(18,18, text = '9', fill = 'black', font = ('arial', 18, 'bold')) cell[3][0].create_text(18,18, text = '7', fill = 'black', font = ('arial', 18, 'bold')) cell[4][0].create_text(18,18, text = '5', fill = 'black', font = ('arial', 18, 'bold')) cell[5][0].create_text(18,18, text = '8', fill = 'black', font = ('arial', 18, 'bold')) cell[6][0].create_text(18,18, text = '4', fill = 'black', font = ('arial', 18, 'bold')) cell[7][0].create_text(18,18, text = '2', fill = 'black', font = ('arial', 18, 'bold')) cell[8][0].create_text(18,18, text = '1', fill = 'black', font = ('arial', 18, 'bold')) cell[77][0].create_text(18,18, text = '5', fill = 'blue' , font = ('arial', 18, 'bold'))
Again, use a loop and functions (approximately the same amount of typing
but 1000 times more reusability):
def make_text(acell, t, font=('arial', 18, 'bold'),
fill='black', **options):
acell.create_text(18,18, text=t, font=font, fill=fill, **options)
def fill_cells(cells, numbers)
for (c,t) in zip(range(9)), numbers[:-1]):
make_text(cell[c][0], t)
make_text(cell[77][0], text=numbers[-1], fill='blue')
numbers = '3697584215'
fill_cells(cell, numbers)
Notice how this makes filling numbers super easy, e.g.:
fill_cells(cell, '9283571649')
for item in cell: item[0].bind('<Enter>', mouse_in) item[0].bind('<KeyPress>', see_key)
mainloop()
James This thread has been closed and replies have been disabled. Please start a new discussion. Similar topics
by: Silas |
last post by:
Hi,
I use view to join difference table together for some function. However,
when the "real" table fields changed (e.g. add/delete/change field). The
view table still use the "old fields".
...
|
by: sandman |
last post by:
I created an ImageList in the .NET Designer. Now I can't figure out
where the images are located. Where is all this stuff stored and how do
I read it? (me personally, I mean -the computer is...
|
by: Simon Verona |
last post by:
I have some Windows Forms software that I'm developing that uses a remote
server (called using remoting) to provide the business rules and dataaccess.
For development purposes the client and...
|
by: David Garamond |
last post by:
I want to know how functional indexes are used "in the real world". Here
are the common uses:
* non-unique index on the first parts of a longish text field
(SUBSTRING(field)) to save disk space,...
|
by: playagain |
last post by:
Please help me to build a list of examples of stack and queue in real life situation...
Conditions:
The object concerned must only one object.
And the object must be tangible.
Example:
Queue...
|
by: Tyno Gendo |
last post by:
Hi everyone
I need to move on a step in my PHP...
I know what classes are, both in PHP4 and 5 and I'm aware of "patterns"
existing, but what I'm looking for are some real world projects eg....
|
by: Mark Shroyer |
last post by:
I guess this sort of falls under the "shameless plug" category, but
here it is: Recently I used a custom metaclass in a Python program
I've been working on, and I ended up doing a sort of write-up...
|
by: Jack |
last post by:
I understand that the standard Python distribution is considered
the C-Python. Howerver, the current C-Python is really a combination
of C and Python implementation. There are about 2000 Python...
|
by: Robert |
last post by:
Thanks George, I really am grateful for attempts to be helpful, but this
really doesn't answer the question in my OP.
What I am looking for is an explanation of WHY things are this way (I was...
|
by: taylorcarr |
last post by:
A Canon printer is a smart device known for being advanced, efficient, and reliable. It is designed for home, office, and hybrid workspace use and can also be used for a variety of purposes. However,...
|
by: Charles Arthur |
last post by:
How do i turn on java script on a villaon, callus and itel keypad mobile phone
|
by: aa123db |
last post by:
Variable and constants
Use var or let for variables and const fror constants.
Var foo ='bar';
Let foo ='bar';const baz ='bar';
Functions
function $name$ ($parameters$) {
}
...
|
by: ryjfgjl |
last post by:
In our work, we often receive Excel tables with data in the same format. If we want to analyze these data, it can be difficult to analyze them because the data is spread across multiple Excel files...
|
by: emmanuelkatto |
last post by:
Hi All, I am Emmanuel katto from Uganda. I want to ask what challenges you've faced while migrating a website to cloud.
Please let me know.
Thanks!
Emmanuel
|
by: BarryA |
last post by:
What are the essential steps and strategies outlined in the Data Structures and Algorithms (DSA) roadmap for aspiring data scientists? How can individuals effectively utilize this roadmap to progress...
|
by: marktang |
last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However,...
|
by: Hystou |
last post by:
Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can...
|
by: Oralloy |
last post by:
Hello folks,
I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>".
The problem is that using the GNU compilers,...
| |