tkinter - How can a file.py containing grid() can be imported properly into a file.py containing pack()? -
this main file import file file1
from tkinter import* import random import time tk=tk() tk.title("app manager") tk.resizable(0,0) tk.wm_attributes("-topmost",1) canvas=canvas(tk,width=460,height=500,bg='black',bd=0,highlightthickness=0) canvas.create_text(230,50,text="app manager",font=('bold',50),fill="gold") canvas.pack() tk.update() class ball: def __init__(self,canvas,color): self.canvas=canvas self.id=canvas.create_oval(0,0,15,15,fill=color) self.canvas.move(self.id,100,100) start=[-4,-3,-2,-1,1,2,3,4] random.shuffle(start) self.x=start[0] self.y=-4 self.canvas_height=self.canvas.winfo_height() self.canvas_width=self.canvas.winfo_width() def draw(self): self.canvas.move(self.id,self.x,self.y) pos=self.canvas.coords(self.id) if pos[1]<=0: self.y=4 if pos[3]>=self.canvas_height: self.y=-4 if pos[0]<=0: self.x=4 if pos[2]>=self.canvas_width: self.x=-4 class b: def pong(): tk.destroy() import pong def bounce(): tk.destroy() import bounce def calculator(): import calculator def quit1(): tk.destroy() b1=button(tk,text="play pong",font=('bold',15),bg='brown',fg='gold',command=b.pong) b1.pack(side=left) b2=button(tk,text="play bounce",font=('bold',15),bg='brown',fg='gold',command=b.bounce) b2.pack(side=left) b3=button(tk,text="calculator",font=('bold',15),bg='brown',fg='gold',command=b.calculator) b3.pack(side=left) b4=button(tk,text="quit",font=('bold',15),bg='brown',fg='gold',command=b.quit1) b4.pack(side=right) ball=ball(canvas,"white") while 1: ball.draw() tk.update_idletasks() tk.update() time.sleep(0.01)
the second file code of calculator. file of calculator works when run independently. when run clicking 'calculator' button through file 1 buttons of file 2 not work. may because file1 contains pack() , file2 contains grid(). file imported file2
from tkinter import* import random import time tk=tk() tk.resizable(width=false,height=false) tk.title("calculator") tk.configure(bg='black') tk.wm_attributes("-topmost",1) frame=frame(tk) frame.pack() frame.grid(row=1,column=0) frame.configure(bg="black") canvas=canvas(tk,width=600,height=150,bg="black",bd=0,highlightthickness=0) canvas.grid(row=0,column=0) canvas.create_text(300,75,text="calculator",font=('bold',50),fill="gold") equa="" equation=stringvar() calculation=label(frame,textvariable=equation,font= ("bold",40),background='black',fg='gold') equation.set("enter equation:") calculation.grid(columnspan=4) tk.update() class ball: def __init__(self,canvas,color): self.canvas=canvas self.id=canvas.create_oval(0,0,15,15,fill=color) self.canvas.move(self.id,100,100) start=[-4,-3,-2,-1,1,2,3,4] random.shuffle(start) self.x=start[0] self.y=-4 self.canvas_height=self.canvas.winfo_height() self.canvas_width=self.canvas.winfo_width() def draw(self): self.canvas.move(self.id,self.x,self.y) pos=self.canvas.coords(self.id) if pos[1]<=0: self.y=2 if pos[3]>=self.canvas_height: self.y=-2 if pos[0]<=0: self.x=2 if pos[2]>=self.canvas_width: self.x=-2 def press(num): global equa equa=equa+str(num) equation.set(equa) def equal(): global equa total=str(eval(equa)) equation.set(total) equa="" def clear(): global equa equa="" equation.set("") equal=button(frame,text="=",font=("bold",40),fg="gold",bg="black",bd=0,command=equal) equal.grid(row=4,column=2) clear=button(frame,text="c",font=("bold",40),fg="gold",bg="black",bd=0,command=clear) clear.grid(row=0,column=4) button0=button(frame,text="0",font=("bold",40),fg="gold",bg="black",bd=0,command=lambda:press(0)) button0.grid(row=4,column=1) button1=button(frame,text="1",font=("bold",40),fg="gold",bg="black",bd=0,command=lambda:press(1)) button1.grid(row=1,column=0) button2=button(frame,text="2",font=("bold",40),fg="gold",bg="black",bd=0,command=lambda:press(2)) button2.grid(row=1,column=1) button3=button(frame,text="3",font=("bold",40),fg="gold",bg="black",bd=0,command=lambda:press(3)) button3.grid(row=1,column=2) button4=button(frame,text="4",font=("bold",40),fg="gold",bg="black",bd=0,command=lambda:press(4)) button4.grid(row=2,column=0) button5=button(frame,text="5",font=("bold",40),fg="gold",bg="black",bd=0,command=lambda:press(5)) button5.grid(row=2,column=1) button6=button(frame,text="6",font=("bold",40),fg="gold",bg="black",bd=0,command=lambda:press(6)) button6.grid(row=2,column=2) button7=button(frame,text="7",font=("bold",40),fg="gold",bg="black",bd=0,command=lambda:press(7)) button7.grid(row=3,column=0) button8=button(frame,text="8",font=("bold",40),fg="gold",bg="black",bd=0,command=lambda:press(8)) button8.grid(row=3,column=1) button9=button(frame,text="9",font=("bold",40),fg="gold",bg="black",bd=0,command=lambda:press(9)) button9.grid(row=3,column=2) plus=button(frame,text="+",font=("bold",40),fg="gold",bg="black",bd=0,command=lambda:press('+')) plus.grid(row=1,column=3) minus=button(frame,text="-",font=("bold",40),fg="gold",bg="black",bd=0,command=lambda:press('-')) minus.grid(row=2,column=3) multiply=button(frame,text="x",font=("bold",40),fg="gold",bg="black",bd=0,command=lambda:press('*')) multiply.grid(row=3,column=3) divide=button(frame,text="/",font=("bold",40),fg="gold",bg="black",bd=0,command=lambda:press('/')) divide.grid(row=4,column=3) dot=button(frame,text=".",font=("bold",40),fg="gold",bg="black",bd=0,command=lambda:press('.')) dot.grid(row=4,column=0) remainder=button(frame,text="%",font=("bold",40),fg="gold",bg="black",bd=0,command=lambda:press('%')) remainder.grid(row=1,column=4) power=button(frame,text="^",font=("bold",40),fg="gold",bg="black",bd=0,command=lambda:press('**')) power.grid(row=2,column=4) leftbracket=button(frame,text="(",font=("bold",40),fg="gold",bg="black",bd=0,command=lambda:press('(')) leftbracket.grid(row=3,column=4) rightbracket=button(frame,text=")",font=("bold",40),fg="gold",bg="black",bd=0,command=lambda:press(')')) rightbracket.grid(row=4,column=4) ball=ball(canvas,"white") while 1: ball.draw() tk.update_idletasks() tk.update() time.sleep(0.01)
you have rewrite 1 or both of files. each contain root window, tkinter program can have single root window.
if intend importable, should design importable. means doesn't have executable code @ global scope. instead, should define functions , classes can used code doing importing.
Comments
Post a Comment