hi,
im currently making a food ordering system in python. I recently decided to put a background in the window and now all of my buttons have disappeared?? does anyone know why this might be.
deepak777 0 Newbie Poster
function[]=panel(alpha)
chord=5;
V=100;
[x,y]=shapegenerator(0,chord);
[xm,ym]=controlpoints(x,y);
p=size(xm);
%plot(xm,ym)
N=p(2);
sum = 0;
for i = 1:N
sum = sum+ ((x(i+1) - x(i))^2+(y(i+1)-y(i))^2)^.5;
end
ChargrO 0 Newbie Poster
i'm kinda new to this so could you possibly dumb it down for me?
ChargrO 0 Newbie Poster
here is my code if you want to test it
from Tkinter import *
import Tkinter as tk
def create_header(t,top):
## Creates the Headings
frame1 = Frame(top, relief=GROOVE, borderwidth=2)
label1 = Label(frame1, text=t, font=('Arial', sqsize/2), fg="red")
label1.pack()
top.create_window(middle, sqsize, window=frame1, anchor=N)
top.pack(fill='both', expand='yes')
def create_buttons(t,place,c, top):
## Creates the Buttons
frame2 = Frame(top, relief=GROOVE, borderwidth=2)
button1 = Button(frame2, text=t, command=c, font=('Arial', middle/16), fg="blue")
button1.pack(side="left")
top.create_window(middle, place, window=frame2, anchor=N)
top.pack(fill='both', expand='yes')
def create_top(frame):
top = Canvas(frame, bg='white', width=s, height=s)
# pick a .gif image file you have in the working directory
# creates the background
image1 = tk.PhotoImage(file="foodimage.gif")
w = image1.width()
h = image1.height()
panel1 = tk.Label(root, image=image1)
panel1.pack(side='top', fill='both', expand='yes')
panel1.image = image1
return top
def create_text(t,top):
frame3 = Frame(top, relief=GROOVE, borderwidth=2)
label2 = Label(frame3, text=t, font=('Arial', middle/16), fg="black")
label2.pack()
top.create_window(middle, sqsize*2, window=frame3, anchor=N)
top.pack(fill='both', expand='yes')
def action():
pass
def create_main():
frame = Frame(None, borderwidth=2)
top=create_top(frame)
top.pack()
create_header('Food Ordering System', top)
for t,place,c in (('Help', 3*sqsize, go_help),
('Register as Member', 4*sqsize, go_register),
('Order Food', 5*sqsize, go_food_menu),
('Quit', 7*sqsize, root.destroy),
):
create_buttons(t,place,c,top)
return frame
def create_menu():
## create here all widgets under frame, which is not active (parent None)
frame = Frame(None, borderwidth=2)
top=create_top(frame)
for t,place,c in (('Food Menu', 3*sqsize, go_menu),
('Chefs Specials', 4*sqsize, go_help_text),
('Main menu', 7*sqsize, go_main),
):
create_buttons(t,place,c,top)
return frame ## return created frame through which can access its widgets
def create_register():
frame = Frame(None, borderwidth=2)
top=create_top(frame)
create_header('Register',top)
for t,place,c in (('Submit', 6*sqsize, go_register),
('Main menu', 7*sqsize, go_main),
):
create_buttons(t,place,c,top)
return frame
def create_food_ordering_system():
frame = Frame(None, borderwidth=2)
top=create_top(frame)
create_header('Todays Specials',top)
create_text("""Todays specials are as follows
""",top) #use """ to get space.
for t,place,c in (('Back', 6*sqsize, go_help),
('Main menu', 7*sqsize, go_main),
):
create_buttons(t,place,c,top)
return frame
def create_about():
frame = Frame(None, borderwidth=2)
top=create_top(frame)
create_header('About',top)
for t,place,c in (('Back', 6*sqsize, go_about),
('Main menu', 7*sqsize, go_main),
):
create_buttons(t,place,c,top)
return frame
def create_register_sucessful():
frame = Frame(None, borderwidth=2)
top=create_top(frame)
create_text(""" Congradulations Your Registration
has been sucessful""",top)
for t,place,c in (('Back', 6*sqsize, go_register_sucessful),
('Main menu', 7*sqsize, go_main),
):
create_buttons(t,place,c,top)
return frame
def create_food_menu():
frame = Frame(None, borderwidth=2)
top=create_top(frame)
create_header('Menu',top)
for t,place,c in (('Back', 6*sqsize, go_help),
('Main menu', 7*sqsize, go_main),
):
create_buttons(t,place,c,top)
return frame
def create_help():
frame = Frame(None, borderwidth=2)
top=create_top(frame)
create_header('Help',top)
for t,place,c in (('About', 3*sqsize, go_help),
('How do I Register?', 5*sqsize, action),
('Main menu', 7*sqsize, go_main),
## comma makes easier later to put more things here
):
create_buttons(t,place,c, top)
return frame ## must not pack the returned frame
def go_help():
global currentframe
currentframe.pack_forget() ## forget the old currentframe
currentframe=helpframe ## put prepared gameframe instaid
currentframe.pack(fill='both', expand='yes') ## pack it to become visible
def go_register():
global currentframe
currentframe.pack_forget()
currentframe=registerframe
currentframe.pack(fill='both', expand='yes')
def go_menu():
global currentframe
currentframe.pack_forget()
currentframe=menuframe
currentframe.pack(fill='both', expand='yes')
def go_main():
global currentframe
currentframe.pack_forget()
currentframe=mainframe
currentframe.pack(fill='both', expand='yes')
def go_help_text():
global currentframe
currentframe.pack_forget()
currentframe=helptext
currentframe.pack(fill='both', expand='yes')
def go_about():
global currentframe
currentframe.pack_forget()
currentframe=abouttext
currentframe.pack(fill='both', expand='yes')
def go_register_sucessful():
global currentframe
currentframe.pack_forget()
currentframe=register_sucess_text
currentframe.pack(fill='both', expand='yes')
def go_food_menu():
global currentframe
currentframe.pack_forget()
currentframe=food_menu_text
currentframe.pack(fill='both', expand='yes')
def diag_stripe(top,colors,sqsize,cols,rows=None):
""" top=object to drawin, sqsize=sqsize of the square
cols,rows = number of cols and rows
"""
if not rows: rows=cols ## can not put rows=cols in parameter list
cl=len(colors)
col=0
for j in range(0,rows*sqsize,sqsize):
for i in range (0,cols*sqsize,sqsize):
fill=colors[col]
top.create_rectangle(i,j,i+sqsize, j+sqsize,fill=fill)
col=(col+1)%cl
if not cols % cl: col=(col+1)%cl
if __name__=="__main__":
root = Tk()
root.title("Food Ordering System ")
numsq=8
sqsize=70
s=sqsize*numsq
middle=numsq/2*sqsize
root.geometry("%sx%s+%s+%s" % (s,s,0,0))
root.resizable(width=FALSE, height=FALSE)
currentframe = mainframe = create_main()
menuframe = create_menu()
registerframe = create_register()
helpframe = create_help()
helptext = create_food_ordering_system()
abouttext = create_about()
register_sucess_text = create_register_sucessful()
food_menu_text = create_food_menu()
go_main()
root.mainloop()
SoulMazer 26 Posting Whiz in Training
Well, it doesn't even look like deepak's code is Python. I'm not quite sure what is going on with that.
Anyways, I do not see any immediate problems why your code should not work except for the constant calling of the function "create_top." You call it eight times? That would mean you create eight canvases with eight background images? Am I missing something or is that your most apparent problem?
EDIT: If this is actually tyonyjv's code, I will definitely not try to question its methods; his GUI algorithms are above my skill level. He will unquestionably know more about it than I do, so try to ask him politely. Good luck.
Edited by SoulMazer because: n/a
TrustyTony 888 ex-Moderator Team Colleague Featured Poster
That is not your code. That is code I wrote for a base of checkers program in earlier thread, including comments and diag_stripe routine for producing the board. Remember to mention the origin of your code or at least not claim that you wrote it.
TrustyTony 888 ex-Moderator Team Colleague Featured Poster
You mixed up the order of frames:
def create_top(frame):
top = Canvas(frame, bg='white', width=s, height=s)
# pick a .gif image file you have in the working directory
# creates the background
image1 = tk.PhotoImage(file="foodimage.gif")
w = image1.width()
h = image1.height()
panel1 = tk.Label(top, image=image1) ## top!!!
panel1.pack(side='top', fill='both', expand='yes')
panel1.image = image1
return top
Edited by TrustyTony because: n/a
TrustyTony 888 ex-Moderator Team Colleague Featured Poster
Picture source http://www.languageguide.org/im/food/images/food2_new.gif
I would not put Help but exchange it with Order Food.
Edited by TrustyTony because: n/a
Be a part of the DaniWeb community
We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.