juliolop
Posts: 20
Joined: Thu Sep 27, 2018 4:33 pm

windows 7 vs RPi >> python3

Mon Dec 17, 2018 12:29 pm

I was developing an application to be run in maybe a kiosk mode in the future in a piece of test equipment also being developed at the shop.
I have two problems until now
first of all let me say I was developing the python3 code in a windows machine
these are the facts
I have a first windows with some "entry" fields and "buttons"
after these fields are filled with one of those buttons you can go to a second window with a main and some pull-down menus
when I run the code in the windows machine the "entry" fields work perfect but when you go to the second window the main menu font are not shown as I want.
when you run the same code in the raspberry Pi the "entry" fields don't work and the font in the main menu in second window are shown as I want
why is this happening? I need to fix this to continue with the project
thanks

User avatar
bensimmo
Posts: 4654
Joined: Sun Dec 28, 2014 3:02 pm
Location: East Yorkshire

Re: windows 7 vs RPi >> python3

Mon Dec 17, 2018 1:21 pm

You'll probably need to provide code to see what you are using to create such fields and buttons.

juliolop
Posts: 20
Joined: Thu Sep 27, 2018 4:33 pm

Re: windows 7 vs RPi >> python3

Mon Dec 17, 2018 1:27 pm

bensimmo wrote:
Mon Dec 17, 2018 1:21 pm
You'll probably need to provide code to see what you are using to create such fields and buttons.
do you want me to paste code here or send it to you privately?

juliolop
Posts: 20
Joined: Thu Sep 27, 2018 4:33 pm

Re: windows 7 vs RPi >> python3

Mon Dec 17, 2018 1:31 pm

Code: Select all

[code]
[/code]
juliolop wrote:
Mon Dec 17, 2018 1:27 pm
bensimmo wrote:
Mon Dec 17, 2018 1:21 pm
You'll probably need to provide code to see what you are using to create such fields and buttons.
do you want me to paste code here or send it to you privately?
here we go, please let me know any change you suggest or anything wrong you can see...

Code: Select all

#imports ===========================================================================================
from tkinter import *
from tkinter import ttk
import tkinter as tk
import tkinter.messagebox
from tkinter.messagebox import showinfo
from ending_session import *
from test_procedure import *

# Create instance
CDU = tk.Tk()

def window(CDU):
   CDU.title('ATA: 34-61-14,   Liquid Crystal Display Control Display Unit')
   CDU.resizable(False,False)       # prevent the GUI from being resizable, the same for (0,0)
   CDU.overrideredirect(1)           # will remove the top badge of window
   
def donothing():
   print("ok, ok I won't")     

def about():
   showinfo(title='About', message='Application developed in Python with Tkinter by AQS\nAny problem or suggestion, please contact (941)726-6632')   

def start_progressbar():
   progress_bar.start()

def stop_progressbar():
   progress_bar.stop()

def run_progressbar():
   progress_bar["maximum"] = 100
   for i in range [101]:
         sleep(0.05)
         progress_bar["value"] = i          #increment progressbar
         progress_bar.update()              #have to call update() in loop
   progress_bar["value"] = 0               # reset / clear progressbar  

def retrieve_report():

   WO_retrieve = Entry(CDU, width=30)
   WO_retrieve. grid(row=12, column=4, sticky='w')
   print("WO Retrieve: %s\n" % (WO_retrieve()))
   print("==================================================")
   print("Closing session")
   print("\n")
   print("Bye")
   print("\n")
   print("==================================================")   

def test_procedure():

   atp = tk.Tk()
   atp.geometry('800x480+0+0')
   atp.overrideredirect(1)           # will remove the top badge of window

   menubar = Menu(atp)
   atp.config(menu=menubar)
   menubar.config(font=('Arial',11,"bold"))
   
   def hello():
      print ("hello!")

   # create a pulldown menu, and add it to the menu bar
   atpmenu = Menu(menubar, tearoff=0)
   atpmenu.configure(font=('Arial',11,"bold"))
   atpmenu.add_command(label="Complete test", command=hello)

   stepsmenu = Menu(atpmenu, tearoff=0)
   stepsmenu.configure(font=('Arial',11,"bold"))
   stepsmenu.add_command(label="Test No1", command=hello)
   stepsmenu.add_command(label="Test No2", command=hello)
   stepsmenu.add_command(label="Test No3", command=hello)
   stepsmenu.add_command(label="Test No4", command=hello)
   stepsmenu.add_command(label="Test No5", command=hello)
   stepsmenu.add_command(label="Test No6", command=hello)
   
   atpmenu.add_cascade(label="Step by step", menu=stepsmenu) 
   
   atpmenu.add_separator()
   atpmenu.add_command(label="Exit", command=atp.destroy)   
   menubar.add_cascade(label="Test Procedure", menu=atpmenu)

   reportmenu = Menu(menubar, tearoff=0)
   reportmenu.configure(font=('Arial',11,"bold"))
   reportmenu.add_command(label="View (display)", command=hello)
   reportmenu.add_separator()
   reportmenu.add_command(label="Save to USB", command=hello)   
   reportmenu.add_command(label="Print...", command=hello)   
   menubar.add_cascade(label="Reports", menu=reportmenu)

   helpmenu = Menu(menubar, tearoff=0)
   helpmenu.configure(font=('Arial',11,"bold"))
   helpmenu.add_command(label="Help...", command=hello) 
   helpmenu.add_command(label="FAQ", command=hello) 
   helpmenu.add_command(label="Failures database", command=hello)
   helpmenu.add_separator()
   helpmenu.add_command(label="About...", command=hello)   
   menubar.add_cascade(label="Help", menu=helpmenu)
   
   # display the menu
   atp.config(menu=menubar)
 
   print("==================================================")
   print("Work Order: %s\nUUT_PN: %s\nUUT SN:%s\nTechnician:%s\nDate:%s" % (UUT_wo.get(), UUT_pn.get(), UUT_sn.get(), WO_tech.get(), WO_date.get()))
   if radVar.get() == 1: print ("Work Requested: Bench Check")
   elif radVar.get() == 2: print ("Work Requested: Repair")
   elif radVar.get() == 3: print ("Work Requested: Overhaul")
   print("==================================================")
   print("Test Procedure")
   print("Liquid Crystal Display Control Display Unit")
   print("174101  Model 2584")
   print("ATA 34-61-14, ATLAS Test Specification 552353-10-01\n")
   print("Test Step 1 =========================\n")
   print("Test Step 2 =========================\n")
   print("Test Step 3 =========================\n")
   print("Test Step 4 =========================\n")
   print("Test Step 5 =========================\n")
   

#==========================================================================================
#window(CDU)===========================================================================================
 
# Add a title, size and disabling resize
CDU.geometry('800x480+0+0')
CDU.title('ATA: 34-61-14,   Liquid Crystal Display Control Display Unit')
#CDU.overrideredirect(1)  #it removes the top badge
#Label(CDU, text="ATA: 34-61-14,   Liquid Crystal Display Control Display Unit").grid(row=0, column=3)

# Adding Labels and Entries widgets =======================================================================
Label(CDU, text="UUT PN:",font = ('Arial', 12,"bold"), fg = 'darkblue').grid(row=1, column=3, sticky='e')
Label(CDU, text="Work Order:",font = ('Arial', 12, "bold"), fg = 'darkblue').grid(row=2, column=3, sticky='e')
Label(CDU, text="UUT SN:",font = ('Arial', 12, "bold"), fg = 'darkblue').grid(row=3, column=3, sticky='e')
Label(CDU, text="Date:",font = ('Arial', 12, "bold"), fg = 'darkblue').grid(row=4, column=3, sticky='e')
Label(CDU, text="Technician:",font = ('Arial', 12, "bold"), fg = 'darkblue').grid(row=5, column=3, sticky='e')

UUT_pn = Entry(CDU, width=30)
UUT_wo = Entry(CDU, width=30)
UUT_sn = Entry(CDU, width=30)
WO_date = Entry(CDU, width=11)
WO_tech = Entry(CDU, width=18)
WO_retrieve = Entry(CDU, width=30)

UUT_pn.grid(row=1, column=4, sticky='e')
UUT_wo.grid(row=2, column=4, sticky='e')
UUT_sn.grid(row=3, column=4, sticky='e')
WO_date.grid(row=4, column=4, sticky='w')
WO_tech.grid(row=5, column=4, sticky='w')
   
# Radiobuttons ===========================================================================================
# Radiobuttons Callback
def radCall():
    radSel=radVar.get()
    if radSel == 1: CDU.configure()
    elif radSel == 2: CDU.configure()
    elif radSel == 3: CDU.configure()
    
# Create three Radiobuttons using one variable
radVar = IntVar() 
 
Label(CDU, text="Work Requested:",font = ('Arial', 12, "bold"), fg = 'darkblue'). grid(row=7, column=3, sticky='w')
benchtest = Radiobutton(CDU, text="Bench Test", font = ('Arial', 12, "bold"),variable=radVar, value=1, command=radCall)
benchtest.grid(row=7, column=4, columnspan=2, sticky='w')
repair = Radiobutton(CDU, text="Repair", font = ('Arial', 12, "bold"), variable=radVar, value=2, command=radCall)
repair.grid(row=8, column=4, columnspan=2, sticky='w')
overhaul = Radiobutton(CDU, text="Overhaul", font = ('Arial', 12, "bold"), variable=radVar, value=3, command=radCall)
overhaul.grid(row=9, column=4, columnspan=4, sticky='w')

# Canvas =================================================================================================
canvas_width = 291
canvas_height =387 
canvas = Canvas(CDU,
                width=canvas_width,
                height=canvas_height)
canvas.grid(row=1, column=0, rowspan=11, columnspan=2, sticky='n')
img = PhotoImage(file="174101_2.gif")
canvas.create_image(20,20, anchor=NW, image=img)

Label(CDU, text="").grid(row=12, column=14, sticky='e')

# Functions ===============================================================================================
Button(CDU, text="   Test Procedure    ",font = ('Arial', 12, "bold"), command = test_procedure).grid(row=10, column=4, sticky='e', padx=2)
Button(CDU, text=" Retrieve Report ",font = ('Arial', 12, "bold"), command = retrieve_report).grid(row=12, column=1, sticky='e')
Button(CDU, text=" About...",font = ('Arial', 12, "bold"), command = about).grid(row=15, column=1, sticky='e', padx=2)
Button(CDU, text=" Close Session ",font = ('Arial', 12, "bold"), command = ending_session).grid(row=15, column=4, sticky='e', padx=2)

window(CDU)

#==========================================================================================
#Start GUI
CDU.mainloop( )
Last edited by juliolop on Mon Dec 17, 2018 5:59 pm, edited 1 time in total.

gordon77
Posts: 5077
Joined: Sun Aug 05, 2012 3:12 pm

Re: windows 7 vs RPi >> python3

Mon Dec 17, 2018 1:35 pm

It's best to use the Code option when posting to ensure the indentation is maintained.

juliolop
Posts: 20
Joined: Thu Sep 27, 2018 4:33 pm

Re: windows 7 vs RPi >> python3

Mon Dec 17, 2018 6:00 pm

gordon77 wrote:
Mon Dec 17, 2018 1:35 pm
It's best to use the Code option when posting to ensure the indentation is maintained.
like that?
sorry, it's my first time

gordon77
Posts: 5077
Joined: Sun Aug 05, 2012 3:12 pm

Re: windows 7 vs RPi >> python3

Mon Dec 17, 2018 6:24 pm

juliolop wrote:
Mon Dec 17, 2018 6:00 pm
gordon77 wrote:
Mon Dec 17, 2018 1:35 pm
It's best to use the Code option when posting to ensure the indentation is maintained.
like that?
sorry, it's my first time
Yes, that's it. :D

juliolop
Posts: 20
Joined: Thu Sep 27, 2018 4:33 pm

Re: windows 7 vs RPi >> python3

Tue Dec 18, 2018 2:31 pm

gordon77 wrote:
Mon Dec 17, 2018 6:24 pm
juliolop wrote:
Mon Dec 17, 2018 6:00 pm
gordon77 wrote:
Mon Dec 17, 2018 1:35 pm
It's best to use the Code option when posting to ensure the indentation is maintained.
like that?
sorry, it's my first time
Yes, that's it. :D
ok, feel free to modify anything you see wrong
thanks

gordon77
Posts: 5077
Joined: Sun Aug 05, 2012 3:12 pm

Re: windows 7 vs RPi >> python3

Tue Dec 18, 2018 2:38 pm

Do you know where it gets these from?

from ending_session import *
from test_procedure import *

juliolop
Posts: 20
Joined: Thu Sep 27, 2018 4:33 pm

Re: windows 7 vs RPi >> python3

Tue Dec 18, 2018 8:16 pm

gordon77 wrote:
Tue Dec 18, 2018 2:38 pm
Do you know where it gets these from?

from ending_session import *
from test_procedure import *
yes, that was me doing some tests trying to call functions from other modules.

ending session

Code: Select all

def ending_session():
   print("==================================================")
   print("Closing session.....")
   print("\n")
   print("...Bye")
   print("\n")
   print("==================================================")
   from tkinter import messagebox
   messagebox.showinfo(message='Have a good day')
   UUT_pn = Entry(CDU, width=30)
   UUT_wo = Entry(CDU, width=30)
   UUT_sn = Entry(CDU, width=30) 
   WO_date = Entry(CDU, width=11)
   WO_tech = Entry(CDU, width=18)
   WO_retrieve = Entry(CDU, width=30)
disregard the other module, it didn't work, it's inside the main code

I found that the sentence which is killing me is

CDU.overrideredirect(1) #it removes the top badge

in the main window
I used it to hide the badge on top of the window and remove the opportunity to the window to be closed, or minimized
the application will be running in a 7 inches display at full display
the operator will no get in contact with python or desktop, that's what I pretend

I repeat in Windows works perfectly but not with the RPi
what can I do to remove that badge?

thanks

gordon77
Posts: 5077
Joined: Sun Aug 05, 2012 3:12 pm

Re: windows 7 vs RPi >> python3

Wed Dec 19, 2018 9:08 am

try this..

Code: Select all

#imports ===========================================================================================
from tkinter import *
from tkinter import ttk
import tkinter as tk
import tkinter.messagebox
from tkinter.messagebox import showinfo


# Create instance
CDU = tk.Tk()

def window(CDU):
   CDU.title('ATA: 34-61-14,   Liquid Crystal Display Control Display Unit')
   CDU.wm_attributes('-type', 'splash')
   CDU.resizable(False,False)       # prevent the GUI from being resizable, the same for (0,0)
   #CDU.overrideredirect(1)           # will remove the top badge of window
   
def donothing():
   print("ok, ok I won't")     

def about():
   showinfo(title='About', message='Application developed in Python with Tkinter by AQS\nAny problem or suggestion, please contact (941)726-6632')   

def start_progressbar():
   progress_bar.start()

def stop_progressbar():
   progress_bar.stop()

def ending_session():
   CDU.destroy()
   sys.exit()
   
def run_progressbar():
   progress_bar["maximum"] = 100
   for i in range [101]:
         sleep(0.05)
         progress_bar["value"] = i          #increment progressbar
         progress_bar.update()              #have to call update() in loop
   progress_bar["value"] = 0               # reset / clear progressbar  

def retrieve_report():

   WO_retrieve = Entry(CDU, width=30)
   WO_retrieve. grid(row=12, column=4, sticky='w')
   print("WO Retrieve: %s\n" % (WO_retrieve()))
   print("==================================================")
   print("Closing session")
   print("\n")
   print("Bye")
   print("\n")
   print("==================================================")   

def test_procedure():

   atp = tk.Tk()
   atp.geometry('800x480+0+0')
   atp.overrideredirect(1)           # will remove the top badge of window

   menubar = Menu(atp)
   atp.config(menu=menubar)
   menubar.config(font=('Arial',11,"bold"))

   def hello():
      print ("Hello!")
      
   def full_test():
      print ("FULL Test!")
      
   def test_1():
      print ("Test 1!")
   def test_2():
      print ("Test 2!")
   def test_3():
      print ("Test 3!")
   def test_4():
      print ("Test 4!")
   def test_5():
      print ("Test 5!")
   def test_6():
      print ("Test 6!")
   

   # create a pulldown menu, and add it to the menu bar
   atpmenu = Menu(menubar, tearoff=0)
   atpmenu.configure(font=('Arial',11,"bold"))
   atpmenu.add_command(label="Complete test", command=full_test)

   stepsmenu = Menu(atpmenu, tearoff=0)
   stepsmenu.configure(font=('Arial',11,"bold"))
   stepsmenu.add_command(label="Test No1", command=test_1)
   stepsmenu.add_command(label="Test No2", command=test_2)
   stepsmenu.add_command(label="Test No3", command=test_3)
   stepsmenu.add_command(label="Test No4", command=test_4)
   stepsmenu.add_command(label="Test No5", command=test_5)
   stepsmenu.add_command(label="Test No6", command=test_6)
   
   atpmenu.add_cascade(label="Step by step", menu=stepsmenu) 
   
   atpmenu.add_separator()
   atpmenu.add_command(label="Exit", command=atp.destroy)   
   menubar.add_cascade(label="Test Procedure", menu=atpmenu)

   reportmenu = Menu(menubar, tearoff=0)
   reportmenu.configure(font=('Arial',11,"bold"))
   reportmenu.add_command(label="View (display)", command=hello)
   reportmenu.add_separator()
   reportmenu.add_command(label="Save to USB", command=hello)   
   reportmenu.add_command(label="Print...", command=hello)   
   menubar.add_cascade(label="Reports", menu=reportmenu)

   helpmenu = Menu(menubar, tearoff=0)
   helpmenu.configure(font=('Arial',11,"bold"))
   helpmenu.add_command(label="Help...", command=hello) 
   helpmenu.add_command(label="FAQ", command=hello) 
   helpmenu.add_command(label="Failures database", command=hello)
   helpmenu.add_separator()
   helpmenu.add_command(label="About...", command=hello)   
   menubar.add_cascade(label="Help", menu=helpmenu)
   
   # display the menu
   atp.config(menu=menubar)
 
   print("==================================================")
   print("Work Order: %s\nUUT_PN: %s\nUUT SN:%s\nTechnician:%s\nDate:%s" % (UUT_wo.get(), UUT_pn.get(), UUT_sn.get(), WO_tech.get(), WO_date.get()))
   if radVar.get() == 1: print ("Work Requested: Bench Check")
   elif radVar.get() == 2: print ("Work Requested: Repair")
   elif radVar.get() == 3: print ("Work Requested: Overhaul")
   print("==================================================")
   print("Test Procedure")
   print("Liquid Crystal Display Control Display Unit")
   print("174101  Model 2584")
   print("ATA 34-61-14, ATLAS Test Specification 552353-10-01\n")
   print("Test Step 1 =========================\n")
   print("Test Step 2 =========================\n")
   print("Test Step 3 =========================\n")
   print("Test Step 4 =========================\n")
   print("Test Step 5 =========================\n")
   

#==========================================================================================
#window(CDU)===========================================================================================
 
# Add a title, size and disabling resize
CDU.geometry('800x480+0+0')
CDU.title('ATA: 34-61-14,   Liquid Crystal Display Control Display Unit')
#CDU.overrideredirect(1)  #it removes the top badge
#Label(CDU, text="ATA: 34-61-14,   Liquid Crystal Display Control Display Unit").grid(row=0, column=3)

# Adding Labels and Entries widgets =======================================================================
Label(CDU, text="UUT PN:",font = ('Arial', 12,"bold"), fg = 'darkblue').grid(row=1, column=3, sticky='e')
Label(CDU, text="Work Order:",font = ('Arial', 12, "bold"), fg = 'darkblue').grid(row=2, column=3, sticky='e')
Label(CDU, text="UUT SN:",font = ('Arial', 12, "bold"), fg = 'darkblue').grid(row=3, column=3, sticky='e')
Label(CDU, text="Date:",font = ('Arial', 12, "bold"), fg = 'darkblue').grid(row=4, column=3, sticky='e')
Label(CDU, text="Technician:",font = ('Arial', 12, "bold"), fg = 'darkblue').grid(row=5, column=3, sticky='e')

UUT_pn = Entry(CDU, width=30)
UUT_wo = Entry(CDU, width=30)
UUT_sn = Entry(CDU, width=30)
WO_date = Entry(CDU, width=11)
WO_tech = Entry(CDU, width=18)
WO_retrieve = Entry(CDU, width=30)

UUT_pn.grid(row=1, column=4, sticky='e')
UUT_wo.grid(row=2, column=4, sticky='e')
UUT_sn.grid(row=3, column=4, sticky='e')
WO_date.grid(row=4, column=4, sticky='w')
WO_tech.grid(row=5, column=4, sticky='w')
   
# Radiobuttons ===========================================================================================
# Radiobuttons Callback
def radCall():
    radSel=radVar.get()
    if radSel == 1: CDU.configure()
    elif radSel == 2: CDU.configure()
    elif radSel == 3: CDU.configure()
    
# Create three Radiobuttons using one variable
radVar = IntVar() 
 
Label(CDU, text="Work Requested:",font = ('Arial', 12, "bold"), fg = 'darkblue'). grid(row=7, column=3, sticky='w')
benchtest = Radiobutton(CDU, text="Bench Test", font = ('Arial', 12, "bold"),variable=radVar, value=1, command=radCall)
benchtest.grid(row=7, column=4, columnspan=2, sticky='w')
repair = Radiobutton(CDU, text="Repair", font = ('Arial', 12, "bold"), variable=radVar, value=2, command=radCall)
repair.grid(row=8, column=4, columnspan=2, sticky='w')
overhaul = Radiobutton(CDU, text="Overhaul", font = ('Arial', 12, "bold"), variable=radVar, value=3, command=radCall)
overhaul.grid(row=9, column=4, columnspan=4, sticky='w')

# Canvas =================================================================================================
canvas_width = 291
canvas_height =387 
canvas = Canvas(CDU,
                width=canvas_width,
                height=canvas_height)
canvas.grid(row=1, column=0, rowspan=11, columnspan=2, sticky='n')
#img = PhotoImage(file="174101_2.gif")
#canvas.create_image(20,20, anchor=NW, image=img)

Label(CDU, text="").grid(row=12, column=14, sticky='e')

# Functions ===============================================================================================
Button(CDU, text="   Test Procedure    ",font = ('Arial', 12, "bold"), command = test_procedure).grid(row=10, column=4, sticky='e', padx=2)
Button(CDU, text=" Retrieve Report ",font = ('Arial', 12, "bold"), command = retrieve_report).grid(row=12, column=1, sticky='e')
Button(CDU, text=" About...",font = ('Arial', 12, "bold"), command = about).grid(row=15, column=1, sticky='e', padx=2)
Button(CDU, text=" Close Session ",font = ('Arial', 12, "bold"), command = ending_session).grid(row=15, column=4, sticky='e', padx=2)

window(CDU)

#==========================================================================================
#Start GUI
CDU.mainloop( )


juliolop
Posts: 20
Joined: Thu Sep 27, 2018 4:33 pm

Re: windows 7 vs RPi >> python3

Thu Dec 20, 2018 4:05 pm

gordon77 wrote:
Wed Dec 19, 2018 9:08 am
try this..

Code: Select all

#imports ===========================================================================================
from tkinter import *
from tkinter import ttk
import tkinter as tk
import tkinter.messagebox
from tkinter.messagebox import showinfo


# Create instance
CDU = tk.Tk()

def window(CDU):
   CDU.title('ATA: 34-61-14,   Liquid Crystal Display Control Display Unit')
   CDU.wm_attributes('-type', 'splash')
   CDU.resizable(False,False)       # prevent the GUI from being resizable, the same for (0,0)
   #CDU.overrideredirect(1)           # will remove the top badge of window
   
def donothing():
   print("ok, ok I won't")     

def about():
   showinfo(title='About', message='Application developed in Python with Tkinter by AQS\nAny problem or suggestion, please contact (941)726-6632')   

def start_progressbar():
   progress_bar.start()

def stop_progressbar():
   progress_bar.stop()

def ending_session():
   CDU.destroy()
   sys.exit()
   
def run_progressbar():
   progress_bar["maximum"] = 100
   for i in range [101]:
         sleep(0.05)
         progress_bar["value"] = i          #increment progressbar
         progress_bar.update()              #have to call update() in loop
   progress_bar["value"] = 0               # reset / clear progressbar  

def retrieve_report():

   WO_retrieve = Entry(CDU, width=30)
   WO_retrieve. grid(row=12, column=4, sticky='w')
   print("WO Retrieve: %s\n" % (WO_retrieve()))
   print("==================================================")
   print("Closing session")
   print("\n")
   print("Bye")
   print("\n")
   print("==================================================")   

def test_procedure():

   atp = tk.Tk()
   atp.geometry('800x480+0+0')
   atp.overrideredirect(1)           # will remove the top badge of window

   menubar = Menu(atp)
   atp.config(menu=menubar)
   menubar.config(font=('Arial',11,"bold"))

   def hello():
      print ("Hello!")
      
   def full_test():
      print ("FULL Test!")
      
   def test_1():
      print ("Test 1!")
   def test_2():
      print ("Test 2!")
   def test_3():
      print ("Test 3!")
   def test_4():
      print ("Test 4!")
   def test_5():
      print ("Test 5!")
   def test_6():
      print ("Test 6!")
   

   # create a pulldown menu, and add it to the menu bar
   atpmenu = Menu(menubar, tearoff=0)
   atpmenu.configure(font=('Arial',11,"bold"))
   atpmenu.add_command(label="Complete test", command=full_test)

   stepsmenu = Menu(atpmenu, tearoff=0)
   stepsmenu.configure(font=('Arial',11,"bold"))
   stepsmenu.add_command(label="Test No1", command=test_1)
   stepsmenu.add_command(label="Test No2", command=test_2)
   stepsmenu.add_command(label="Test No3", command=test_3)
   stepsmenu.add_command(label="Test No4", command=test_4)
   stepsmenu.add_command(label="Test No5", command=test_5)
   stepsmenu.add_command(label="Test No6", command=test_6)
   
   atpmenu.add_cascade(label="Step by step", menu=stepsmenu) 
   
   atpmenu.add_separator()
   atpmenu.add_command(label="Exit", command=atp.destroy)   
   menubar.add_cascade(label="Test Procedure", menu=atpmenu)

   reportmenu = Menu(menubar, tearoff=0)
   reportmenu.configure(font=('Arial',11,"bold"))
   reportmenu.add_command(label="View (display)", command=hello)
   reportmenu.add_separator()
   reportmenu.add_command(label="Save to USB", command=hello)   
   reportmenu.add_command(label="Print...", command=hello)   
   menubar.add_cascade(label="Reports", menu=reportmenu)

   helpmenu = Menu(menubar, tearoff=0)
   helpmenu.configure(font=('Arial',11,"bold"))
   helpmenu.add_command(label="Help...", command=hello) 
   helpmenu.add_command(label="FAQ", command=hello) 
   helpmenu.add_command(label="Failures database", command=hello)
   helpmenu.add_separator()
   helpmenu.add_command(label="About...", command=hello)   
   menubar.add_cascade(label="Help", menu=helpmenu)
   
   # display the menu
   atp.config(menu=menubar)
 
   print("==================================================")
   print("Work Order: %s\nUUT_PN: %s\nUUT SN:%s\nTechnician:%s\nDate:%s" % (UUT_wo.get(), UUT_pn.get(), UUT_sn.get(), WO_tech.get(), WO_date.get()))
   if radVar.get() == 1: print ("Work Requested: Bench Check")
   elif radVar.get() == 2: print ("Work Requested: Repair")
   elif radVar.get() == 3: print ("Work Requested: Overhaul")
   print("==================================================")
   print("Test Procedure")
   print("Liquid Crystal Display Control Display Unit")
   print("174101  Model 2584")
   print("ATA 34-61-14, ATLAS Test Specification 552353-10-01\n")
   print("Test Step 1 =========================\n")
   print("Test Step 2 =========================\n")
   print("Test Step 3 =========================\n")
   print("Test Step 4 =========================\n")
   print("Test Step 5 =========================\n")
   

#==========================================================================================
#window(CDU)===========================================================================================
 
# Add a title, size and disabling resize
CDU.geometry('800x480+0+0')
CDU.title('ATA: 34-61-14,   Liquid Crystal Display Control Display Unit')
#CDU.overrideredirect(1)  #it removes the top badge
#Label(CDU, text="ATA: 34-61-14,   Liquid Crystal Display Control Display Unit").grid(row=0, column=3)

# Adding Labels and Entries widgets =======================================================================
Label(CDU, text="UUT PN:",font = ('Arial', 12,"bold"), fg = 'darkblue').grid(row=1, column=3, sticky='e')
Label(CDU, text="Work Order:",font = ('Arial', 12, "bold"), fg = 'darkblue').grid(row=2, column=3, sticky='e')
Label(CDU, text="UUT SN:",font = ('Arial', 12, "bold"), fg = 'darkblue').grid(row=3, column=3, sticky='e')
Label(CDU, text="Date:",font = ('Arial', 12, "bold"), fg = 'darkblue').grid(row=4, column=3, sticky='e')
Label(CDU, text="Technician:",font = ('Arial', 12, "bold"), fg = 'darkblue').grid(row=5, column=3, sticky='e')

UUT_pn = Entry(CDU, width=30)
UUT_wo = Entry(CDU, width=30)
UUT_sn = Entry(CDU, width=30)
WO_date = Entry(CDU, width=11)
WO_tech = Entry(CDU, width=18)
WO_retrieve = Entry(CDU, width=30)

UUT_pn.grid(row=1, column=4, sticky='e')
UUT_wo.grid(row=2, column=4, sticky='e')
UUT_sn.grid(row=3, column=4, sticky='e')
WO_date.grid(row=4, column=4, sticky='w')
WO_tech.grid(row=5, column=4, sticky='w')
   
# Radiobuttons ===========================================================================================
# Radiobuttons Callback
def radCall():
    radSel=radVar.get()
    if radSel == 1: CDU.configure()
    elif radSel == 2: CDU.configure()
    elif radSel == 3: CDU.configure()
    
# Create three Radiobuttons using one variable
radVar = IntVar() 
 
Label(CDU, text="Work Requested:",font = ('Arial', 12, "bold"), fg = 'darkblue'). grid(row=7, column=3, sticky='w')
benchtest = Radiobutton(CDU, text="Bench Test", font = ('Arial', 12, "bold"),variable=radVar, value=1, command=radCall)
benchtest.grid(row=7, column=4, columnspan=2, sticky='w')
repair = Radiobutton(CDU, text="Repair", font = ('Arial', 12, "bold"), variable=radVar, value=2, command=radCall)
repair.grid(row=8, column=4, columnspan=2, sticky='w')
overhaul = Radiobutton(CDU, text="Overhaul", font = ('Arial', 12, "bold"), variable=radVar, value=3, command=radCall)
overhaul.grid(row=9, column=4, columnspan=4, sticky='w')

# Canvas =================================================================================================
canvas_width = 291
canvas_height =387 
canvas = Canvas(CDU,
                width=canvas_width,
                height=canvas_height)
canvas.grid(row=1, column=0, rowspan=11, columnspan=2, sticky='n')
#img = PhotoImage(file="174101_2.gif")
#canvas.create_image(20,20, anchor=NW, image=img)

Label(CDU, text="").grid(row=12, column=14, sticky='e')

# Functions ===============================================================================================
Button(CDU, text="   Test Procedure    ",font = ('Arial', 12, "bold"), command = test_procedure).grid(row=10, column=4, sticky='e', padx=2)
Button(CDU, text=" Retrieve Report ",font = ('Arial', 12, "bold"), command = retrieve_report).grid(row=12, column=1, sticky='e')
Button(CDU, text=" About...",font = ('Arial', 12, "bold"), command = about).grid(row=15, column=1, sticky='e', padx=2)
Button(CDU, text=" Close Session ",font = ('Arial', 12, "bold"), command = ending_session).grid(row=15, column=4, sticky='e', padx=2)

window(CDU)

#==========================================================================================
#Start GUI
CDU.mainloop( )

thanks, yes it worked and I can see your changes, but I still have some questions...
as you probably understood, this application will be running in a tester, from the second window I will need to perform every test an other functions.
1.- is it a good idea the use of a canvas widget a little smaller to the main window 800x460 to conduct the test? what's the best way you recommend to do this.
2.- I can't exit to python when I use ending_session(), I need the script start again, like a reset but without going to python, the operator only needs access to the GUI window
3.- right now I'm creating a report file, how can I create a report named with the WO number I get with the entry in the first window?
thanks again for all your help

gordon77
Posts: 5077
Joined: Sun Aug 05, 2012 3:12 pm

Re: windows 7 vs RPi >> python3

Mon Dec 24, 2018 12:55 pm

Hopefully this answers 2 & 3. Although disabling the window banner stops you entering data !

Code: Select all

#imports ===========================================================================================
from tkinter import *
from tkinter import ttk
import tkinter as tk
import tkinter.messagebox
from tkinter.messagebox import showinfo


# Create instance
CDU = tk.Tk()

def window(CDU):
   CDU.title('ATA: 34-61-14,   Liquid Crystal Display Control Display Unit')
   #CDU.resizable(False,False)       # prevent the GUI from being resizable, the same for (0,0)
   #CDU.overrideredirect(1)           # will remove the top badge of window
   
   
def donothing():
   print("ok, ok I won't")     

def about():
   showinfo(title='About', message='Application developed in Python with Tkinter by AQS\nAny problem or suggestion, please contact (941)726-6632')   

def start_progressbar():
   progress_bar.start()

def stop_progressbar():
   progress_bar.stop()

def clear_session():
   UUT_wo.delete(0, END)
   UUT_pn.delete(0, END)
   UUT_sn.delete(0, END)
   WO_date.delete(0, END)
   WO_tech.delete(0, END)
   radVar.set(None)
   
def run_progressbar():
   progress_bar["maximum"] = 100
   for i in range [101]:
         sleep(0.05)
         progress_bar["value"] = i          #increment progressbar
         progress_bar.update()              #have to call update() in loop
   progress_bar["value"] = 0               # reset / clear progressbar  

def retrieve_report():

   text = UUT_wo.get()
   print("WO Retrieve: %s\n" % (text))
   print("==================================================")
   print("Closing session")
   print("\n")
   print("Bye")
   print("\n")
   print("==================================================")   

def test_procedure():

   atp = tk.Tk()
   atp.geometry('800x480+0+0')
   atp.overrideredirect(1)           # will remove the top badge of window

   menubar = Menu(atp)
   atp.config(menu=menubar)
   menubar.config(font=('Arial',11,"bold"))

   def hello():
      print ("Hello!")
      
   def full_test():
      print ("FULL Test!")
      test_1()
      test_2()
      test_3()
      test_4()
      test_5()
      test_6()
      
   def test_1():
      print ("Test 1!")
   def test_2():
      print ("Test 2!")
   def test_3():
      print ("Test 3!")
   def test_4():
      print ("Test 4!")
   def test_5():
      print ("Test 5!")
   def test_6():
      print ("Test 6!")
   

   # create a pulldown menu, and add it to the menu bar
   atpmenu = Menu(menubar, tearoff=0)
   atpmenu.configure(font=('Arial',11,"bold"))
   atpmenu.add_command(label="Complete test", command=full_test)

   stepsmenu = Menu(atpmenu, tearoff=0)
   stepsmenu.configure(font=('Arial',11,"bold"))
   stepsmenu.add_command(label="Test No1", command=test_1)
   stepsmenu.add_command(label="Test No2", command=test_2)
   stepsmenu.add_command(label="Test No3", command=test_3)
   stepsmenu.add_command(label="Test No4", command=test_4)
   stepsmenu.add_command(label="Test No5", command=test_5)
   stepsmenu.add_command(label="Test No6", command=test_6)
   
   atpmenu.add_cascade(label="Step by step", menu=stepsmenu) 
   
   atpmenu.add_separator()
   atpmenu.add_command(label="Exit", command=atp.destroy)   
   menubar.add_cascade(label="Test Procedure", menu=atpmenu)

   reportmenu = Menu(menubar, tearoff=0)
   reportmenu.configure(font=('Arial',11,"bold"))
   reportmenu.add_command(label="View (display)", command=hello)
   reportmenu.add_separator()
   reportmenu.add_command(label="Save to USB", command=hello)   
   reportmenu.add_command(label="Print...", command=hello)   
   menubar.add_cascade(label="Reports", menu=reportmenu)

   helpmenu = Menu(menubar, tearoff=0)
   helpmenu.configure(font=('Arial',11,"bold"))
   helpmenu.add_command(label="Help...", command=hello) 
   helpmenu.add_command(label="FAQ", command=hello) 
   helpmenu.add_command(label="Failures database", command=hello)
   helpmenu.add_separator()
   helpmenu.add_command(label="About...", command=hello)   
   menubar.add_cascade(label="Help", menu=helpmenu)
   
   # display the menu
   atp.config(menu=menubar)
 
   print("==================================================")
   print("Work Order: %s\nUUT_PN: %s\nUUT SN:%s\nTechnician:%s\nDate:%s" % (UUT_wo.get(), UUT_pn.get(), UUT_sn.get(), WO_tech.get(), WO_date.get()))
   if radVar.get() == 1: print ("Work Requested: Bench Check")
   elif radVar.get() == 2: print ("Work Requested: Repair")
   elif radVar.get() == 3: print ("Work Requested: Overhaul")
   print("==================================================")
   print("Test Procedure")
   print("Liquid Crystal Display Control Display Unit")
   print("174101  Model 2584")
   print("ATA 34-61-14, ATLAS Test Specification 552353-10-01\n")
   print("Test Step 1 =========================\n")
   print("Test Step 2 =========================\n")
   print("Test Step 3 =========================\n")
   print("Test Step 4 =========================\n")
   print("Test Step 5 =========================\n")
   

#==========================================================================================
#window(CDU)===========================================================================================
 
# Add a title, size and disabling resize
CDU.geometry('800x480+0+0')
CDU.title('ATA: 34-61-14,   Liquid Crystal Display Control Display Unit')
#CDU.overrideredirect(1)  #it removes the top badge
#Label(CDU, text="ATA: 34-61-14,   Liquid Crystal Display Control Display Unit").grid(row=0, column=3)

# Adding Labels and Entries widgets =======================================================================
Label(CDU, text="UUT PN:",font = ('Arial', 12,"bold"), fg = 'darkblue').grid(row=1, column=3, sticky='e')
Label(CDU, text="Work Order:",font = ('Arial', 12, "bold"), fg = 'darkblue').grid(row=2, column=3, sticky='e')
Label(CDU, text="UUT SN:",font = ('Arial', 12, "bold"), fg = 'darkblue').grid(row=3, column=3, sticky='e')
Label(CDU, text="Date:",font = ('Arial', 12, "bold"), fg = 'darkblue').grid(row=4, column=3, sticky='e')
Label(CDU, text="Technician:",font = ('Arial', 12, "bold"), fg = 'darkblue').grid(row=5, column=3, sticky='e')

UUT_pn = Entry(CDU, width=30)
UUT_wo = Entry(CDU, width=30)
UUT_sn = Entry(CDU, width=30)
WO_date = Entry(CDU, width=11)
WO_tech = Entry(CDU, width=18)
WO_retrieve = Entry(CDU, width=30)

UUT_pn.grid(row=1, column=4, sticky='e')
UUT_wo.grid(row=2, column=4)
UUT_sn.grid(row=3, column=4, sticky='e')
WO_date.grid(row=4, column=4, sticky='w')
WO_tech.grid(row=5, column=4, sticky='w')
   
# Radiobuttons ===========================================================================================
# Radiobuttons Callback
def radCall():
    radSel=radVar.get()
    if radSel == 1: CDU.configure()
    elif radSel == 2: CDU.configure()
    elif radSel == 3: CDU.configure()
    
# Create three Radiobuttons using one variable
radVar = IntVar() 
 
Label(CDU, text="Work Requested:",font = ('Arial', 12, "bold"), fg = 'darkblue'). grid(row=7, column=3, sticky='w')
benchtest = Radiobutton(CDU, text="Bench Test", font = ('Arial', 12, "bold"),variable=radVar, value=1, command=radCall)
benchtest.grid(row=7, column=4, columnspan=2, sticky='w')
repair = Radiobutton(CDU, text="Repair", font = ('Arial', 12, "bold"), variable=radVar, value=2, command=radCall)
repair.grid(row=8, column=4, columnspan=2, sticky='w')
overhaul = Radiobutton(CDU, text="Overhaul", font = ('Arial', 12, "bold"), variable=radVar, value=3, command=radCall)
overhaul.grid(row=9, column=4, columnspan=4, sticky='w')

# Canvas =================================================================================================
canvas_width = 291
canvas_height =387 
canvas = Canvas(CDU,
                width=canvas_width,
                height=canvas_height)
canvas.grid(row=1, column=0, rowspan=11, columnspan=2, sticky='n')
#img = PhotoImage(file="174101_2.gif")
#canvas.create_image(20,20, anchor=NW, image=img)

Label(CDU, text="").grid(row=12, column=14, sticky='e')

# Functions ===============================================================================================
Button(CDU, text="   Test Procedure    ",font = ('Arial', 12, "bold"), command = test_procedure).grid(row=10, column=4, sticky='e', padx=2)
Button(CDU, text=" Retrieve Report ",font = ('Arial', 12, "bold"), command = retrieve_report).grid(row=12, column=1, sticky='e')
Button(CDU, text=" About...",font = ('Arial', 12, "bold"), command = about).grid(row=15, column=1, sticky='e', padx=2)
Button(CDU, text=" Clear Session ",font = ('Arial', 12, "bold"), command = clear_session).grid(row=15, column=4, sticky='e', padx=2)



#==========================================================================================
#Start GUI
window(CDU)
CDU.mainloop( )

User avatar
bensimmo
Posts: 4654
Joined: Sun Dec 28, 2014 3:02 pm
Location: East Yorkshire

Re: windows 7 vs RPi >> python3

Mon Dec 24, 2018 1:31 pm

you might want to tidy you imports up, you import it all and then import bits and bobs etc.
Also
from tkinter import ttk
&
import tkinter.messagebox
are not used.

I guess the progress bar is work in progress as it's not going to work and you not imported sleep.

and you unconventional 3 spaces (rather than the python 4-spaces style), this one just light a checker up for almost every line and I've not found the disable bit yet ;-)

gordon77
Posts: 5077
Joined: Sun Aug 05, 2012 3:12 pm

Re: windows 7 vs RPi >> python3

Mon Dec 24, 2018 1:44 pm

I agree there's ongoing work, l'm just trying to help the OP get it going. :D

juliolop
Posts: 20
Joined: Thu Sep 27, 2018 4:33 pm

Re: windows 7 vs RPi >> python3

Fri Dec 28, 2018 3:20 pm

thanks for everything
I will check everything

one more question
for example, how can I take the info from an entry and use it to rename a file?

during the test I generates a report.rep file, and I would like at the end of the test session, rename that file with the info I pick up in the WO entry, and then delete the report.rep file
how can I do that?
thanks

gordon77
Posts: 5077
Joined: Sun Aug 05, 2012 3:12 pm

Re: windows 7 vs RPi >> python3

Mon Dec 31, 2018 3:16 pm

Can you upload your latest code ?

juliolop
Posts: 20
Joined: Thu Sep 27, 2018 4:33 pm

Re: windows 7 vs RPi >> python3

Wed Jan 02, 2019 1:28 pm

Code: Select all

#imports ===========================================================================================
from tkinter import *
from tkinter import ttk
import tkinter as tk
import tkinter.messagebox
from tkinter.messagebox import showinfo
from Test_1 import *
from Test_2 import *
from Test_3 import *
from Test_4 import *
from Test_5 import *
from Test_6 import *
from view_report import *
from save_USB import *
from print_report import *
from help_window import *
from about_window import *
from fail_database import *
from FAQ_window import *
from Exit_ATP import *
from ending_session import *
import os


# Create instance
CDU = tk.Tk()

def window(CDU):
   CDU.title('ATA: 34-61-14,   Liquid Crystal Display Control Display Unit')
   CDU.wm_attributes('-type', 'splash')
   CDU.resizable(False,False)       # prevent the GUI from being resizable, the same for (0,0)
#   CDU.overrideredirect(1)           # will remove the top badge of window
   f = open("report.rep",'a+')
   
def donothing():
   print("ok, ok I won't")     

def about():
#   showinfo(title='About', message='Application developed in Python with Tkinter by AQS\nAny problem or suggestion, please contact (941)726-6632')   
   showinfo(title='About', message='Application developed in Python with Tkinter by AQS\nAny problem or suggestion, please contact (941) 726-6632')   

def start_progressbar():
   progress_bar.start()

def stop_progressbar():
   progress_bar.stop()

def ending_session():
   CDU.destroy()
#   final_report = str(UUT_wo())
#   print("WO: %s\n" % (UUT_wo.get()))
#   report_name = "%s.rep" % UUT_wo.get()
   os.rename('report.rep','%s.rep' % (UUT_wo))
   sys.exit()


def run_progressbar():
   progress_bar["maximum"] = 100
   for i in range [101]:
         sleep(0.05)
         progress_bar["value"] = i          #increment progressbar
         progress_bar.update()              #have to call update() in loop
   progress_bar["value"] = 0               # reset / clear progressbar  

def retrieve_report():
   WO_retrieve = Entry(CDU, width=30)
   WO_retrieve. grid(row=12, column=4, sticky='w')
   print("WO Retrieve: %s\n" % (WO_retrieve()))
   print("===========================================================")
   print("Closing session")
   print("\n")
   print("                      ...Bye")
   print("\n")

def test_procedure():
   atp = tk.Tk()
   atp.geometry('800x480+0+0')
   atp.overrideredirect(1)
   
   menubar = Menu(atp)
   atp.config(menu=menubar)
   menubar.config(font=('Arial',16,"bold"))
 
   
   def exit_ATP():
       #    WO = str(UUT_wo)
       #print (WO)
       #print("Work Order: %s" % (UUT_wo.get()))
       f = open('report.rep','a')
       f.write("===========================================================\n")
       f.write("Closing session\n")
       d = datetime.now()
       f.write("{:%H:%M:%S}\n".format(d))
       f.write("\n")
       f.write("                      ...Bye\n")
       f.close()
       atp.destroy()
       
       
   def complete_test():
      print ("Complete Test!")
      f = open("report.rep",'a')
      f.write("Developing All Tests\n")
        

   # create a pulldown menu, and add it to the menu bar
   atpmenu = Menu(menubar, tearoff=0)
   atpmenu.configure(font=('Arial',16,"bold"))
   atpmenu.add_command(label="Complete test", command=complete_test)

   stepsmenu = Menu(atpmenu, tearoff=0)
   stepsmenu.configure(font=('Arial',16,"bold"))
   stepsmenu.add_command(label="Test No1", command=Test_1)
   stepsmenu.add_command(label="Test No2", command=Test_2)
   stepsmenu.add_command(label="Test No3", command=Test_3)
   stepsmenu.add_command(label="Test No4", command=Test_4)
   stepsmenu.add_command(label="Test No5", command=Test_5)
   stepsmenu.add_command(label="Test No6", command=Test_6)
   
   atpmenu.add_cascade(label="Step by step", menu=stepsmenu) 
   
   atpmenu.add_separator()
   atpmenu.add_command(label="Exit", command=exit_ATP)   
   menubar.add_cascade(label="Test Procedure", menu=atpmenu)

   reportmenu = Menu(menubar, tearoff=0)
   reportmenu.configure(font=('Arial',16,"bold"))
   reportmenu.add_command(label="View (display)", command=view_report)
   reportmenu.add_separator()
   reportmenu.add_command(label="Save to USB", command=save_USB)   
   reportmenu.add_command(label="Print...", command=print_report)   
   menubar.add_cascade(label="Reports", menu=reportmenu)

   helpmenu = Menu(menubar, tearoff=0)
   helpmenu.configure(font=('Arial',16,"bold"))
   helpmenu.add_command(label="Help...", command=help_window) 
   helpmenu.add_command(label="FAQ", command=FAQ_window) 
   helpmenu.add_command(label="Failures database", command=fail_database)
   helpmenu.add_separator()
   helpmenu.add_command(label="About...", command=about_window)   
   menubar.add_cascade(label="Help", menu=helpmenu)
   
   # display the menu
   atp.config(menu=menubar)
   print("===========================================================")
   print("Work Order: %s\nUUT_PN: %s\nUUT SN:%s\nTechnician:%s" % (UUT_wo.get(), UUT_pn.get(), UUT_sn.get(), WO_tech.get()))
   if radVar.get() == 1: print ("Work Requested: Bench Check")
   elif radVar.get() == 2: print ("Work Requested: Repair")
   elif radVar.get() == 3: print ("Work Requested: Overhaul")
   print("===========================================================")
   print("Acceptance Test Procedure")
   print("Liquid Crystal Display Control Display Unit")
   print("174101  Model 2584")
   print("ATA 34-61-14, ATLAS Test Specification 552353-10-01")
   print("===========================================================")
   from datetime import datetime
   d = datetime.now()
   print("{:%Y-%m-%d %H:%M:%S}".format(d))

   f = open("report.rep",'a')
   f.write("Acceptance Test Procedure\n")
   f.write("Liquid Crystal Display Control Display Unit\n")
   f.write("174101  Model 2584\n")
   f.write("ATA 34-61-14, ATLAS Test Specification 552353-10-01\n")
   f.write("Date:")
   f.write("{:%m-%d-%Y %H:%M:%S}\n".format(d))
   f.write("===========================================================\n")   
   f.write('WO:'+ UUT_wo.get())
   f.write("\nUUT_PN: %s\nUUT SN:%s\nTechnician:%s" % (UUT_pn.get(), UUT_sn.get(), WO_tech.get()))
   f.write("\n===========================================================\n")
   f = open("report.rep",'a')
    

#==========================================================================================
#window(CDU)===========================================================================================
 
# Add a title, size and disabling resize
CDU.attributes('-type', 'dock')
CDU.geometry('800x480+0+0')
CDU.title('ATA: 34-61-14,   Liquid Crystal Display Control Display Unit')
#CDU.overrideredirect(1)  #it removes the top badge
#Label(CDU, text="ATA: 34-61-14,   Liquid Crystal Display Control Display Unit").grid(row=0, column=3)

# Adding Labels and Entries widgets =======================================================================
Label(CDU, text="UUT PN:",font = ('Arial', 16,"bold"), fg = 'darkblue').grid(row=1, column=3, sticky='e')
Label(CDU, text="Work Order:",font = ('Arial', 16, "bold"), fg = 'darkblue').grid(row=2, column=3, sticky='e')
Label(CDU, text="UUT SN:",font = ('Arial', 16, "bold"), fg = 'darkblue').grid(row=3, column=3, sticky='e')
Label(CDU, text="Technician:",font = ('Arial', 16, "bold"), fg = 'darkblue').grid(row=5, column=3, sticky='e')

UUT_pn = tk.Entry(CDU, width=30)
UUT_wo = tk.Entry(CDU, width=30)
UUT_sn = tk.Entry(CDU, width=30)
WO_tech = tk.Entry(CDU, width=18)
WO_retrieve = tk.Entry(CDU, width=30)

UUT_pn.grid(row=1, column=4, sticky='e')
UUT_wo.grid(row=2, column=4, sticky='e')
UUT_sn.grid(row=3, column=4, sticky='e')
WO_tech.grid(row=5, column=4, sticky='w')

CDU.focus_force()

#WO = str(UUT_wo)
#f = open("{%WO}.rep",'w')
#f.write(WO)
   
# Radiobuttons ===========================================================================================
# Radiobuttons Callback
def radCall():
    radSel=radVar.get()
    if radSel == 1: CDU.configure()
    elif radSel == 2: CDU.configure()
    elif radSel == 3: CDU.configure()
    
# Create three Radiobuttons using one variable
radVar = IntVar() 
 
Label(CDU, text="Work Requested:",font = ('Arial', 16, "bold"), fg = 'darkblue'). grid(row=7, column=3, sticky='w')
benchtest = Radiobutton(CDU, text="Bench Test", font = ('Arial', 16, "bold"),variable=radVar, value=1, command=radCall)
benchtest.grid(row=7, column=4, columnspan=2, sticky='w')
repair = Radiobutton(CDU, text="Repair", font = ('Arial', 16, "bold"), variable=radVar, value=2, command=radCall)
repair.grid(row=8, column=4, columnspan=2, sticky='w')
overhaul = Radiobutton(CDU, text="Overhaul", font = ('Arial', 16, "bold"), variable=radVar, value=3, command=radCall)
overhaul.grid(row=9, column=4, columnspan=4, sticky='w')

# Canvas =================================================================================================
canvas_width = 291
canvas_height =387 
canvas = Canvas(CDU,
                width=canvas_width,
                height=canvas_height)
canvas.grid(row=1, column=0, rowspan=11, columnspan=2, sticky='n')
img = PhotoImage(file="174101_2.gif")
canvas.create_image(20,20, anchor=NW, image=img)

Label(CDU, text="").grid(row=12, column=18, sticky='e')

# Functions ===============================================================================================
Button(CDU, text="   Test Procedure    ",font = ('Arial', 16, "bold"), command = test_procedure).grid(row=10, column=4, sticky='e', padx=2)
Button(CDU, text=" Retrieve Report ",font = ('Arial', 16, "bold"), command = retrieve_report).grid(row=12, column=1, sticky='e')
Button(CDU, text=" About...",font = ('Arial', 16, "bold"), command = about).grid(row=15, column=1, sticky='e', padx=2)
Button(CDU, text=" Close Session ",font = ('Arial', 16, "bold"), command = ending_session).grid(row=15, column=4, sticky='e', padx=2)

window(CDU)

#==========================================================================================
#Start GUI
CDU.mainloop( ) 


gordon77
Posts: 5077
Joined: Sun Aug 05, 2012 3:12 pm

Re: windows 7 vs RPi >> python3

Wed Jan 02, 2019 3:54 pm

try this..

I think you were closing the CDU before trying to read the value of UUT_wo, and not using the correct method to read it.

Code: Select all

def ending_session():
   os.rename('report.rep','%s.rep' % (UUT_wo.get()))
   CDU.destroy()
   sys.exit()

Code: Select all

#imports ===========================================================================================
from tkinter import *
from tkinter import ttk
import tkinter as tk
import tkinter.messagebox
from tkinter.messagebox import showinfo
from Test_1 import *
from Test_2 import *
from Test_3 import *
from Test_4 import *
from Test_5 import *
from Test_6 import *
from view_report import *
from save_USB import *
from print_report import *
from help_window import *
from about_window import *
from fail_database import *
from FAQ_window import *
from Exit_ATP import *
from ending_session import *
import os


# Create instance
CDU = tk.Tk()

def window(CDU):
   CDU.title('ATA: 34-61-14,   Liquid Crystal Display Control Display Unit')
   CDU.wm_attributes('-type', 'splash')
   CDU.resizable(False,False)       # prevent the GUI from being resizable, the same for (0,0)
#   CDU.overrideredirect(1)           # will remove the top badge of window
   f = open("report.rep",'a+')
   
def donothing():
   print("ok, ok I won't")     

def about():
#   showinfo(title='About', message='Application developed in Python with Tkinter by AQS\nAny problem or suggestion, please contact (941)726-6632')   
   showinfo(title='About', message='Application developed in Python with Tkinter by AQS\nAny problem or suggestion, please contact (941) 726-6632')   

def start_progressbar():
   progress_bar.start()

def stop_progressbar():
   progress_bar.stop()

def ending_session():
   #CDU.destroy()
#   final_report = str(UUT_wo())
#   print("WO: %s\n" % (UUT_wo.get()))
#   report_name = "%s.rep" % UUT_wo.get()
   os.rename('report.rep','%s.rep' % (UUT_wo.get()))
   CDU.destroy()
   sys.exit()


def run_progressbar():
   progress_bar["maximum"] = 100
   for i in range [101]:
         sleep(0.05)
         progress_bar["value"] = i          #increment progressbar
         progress_bar.update()              #have to call update() in loop
   progress_bar["value"] = 0               # reset / clear progressbar  

def retrieve_report():
   WO_retrieve = Entry(CDU, width=30)
   WO_retrieve. grid(row=12, column=4, sticky='w')
   print("WO Retrieve: %s\n" % (WO_retrieve()))
   print("===========================================================")
   print("Closing session")
   print("\n")
   print("                      ...Bye")
   print("\n")

def test_procedure():
   atp = tk.Tk()
   atp.geometry('800x480+0+0')
   atp.overrideredirect(1)
   
   menubar = Menu(atp)
   atp.config(menu=menubar)
   menubar.config(font=('Arial',16,"bold"))
 
   
   def exit_ATP():
       #    WO = str(UUT_wo)
       #print (WO)
       #print("Work Order: %s" % (UUT_wo.get()))
       f = open('report.rep','a')
       f.write("===========================================================\n")
       f.write("Closing session\n")
       d = datetime.now()
       f.write("{:%H:%M:%S}\n".format(d))
       f.write("\n")
       f.write("                      ...Bye\n")
       f.close()
       atp.destroy()
       
       
   def complete_test():
      print ("Complete Test!")
      f = open("report.rep",'a')
      f.write("Developing All Tests\n")
        

   # create a pulldown menu, and add it to the menu bar
   atpmenu = Menu(menubar, tearoff=0)
   atpmenu.configure(font=('Arial',16,"bold"))
   atpmenu.add_command(label="Complete test", command=complete_test)

   stepsmenu = Menu(atpmenu, tearoff=0)
   stepsmenu.configure(font=('Arial',16,"bold"))
   stepsmenu.add_command(label="Test No1", command=Test_1)
   stepsmenu.add_command(label="Test No2", command=Test_2)
   stepsmenu.add_command(label="Test No3", command=Test_3)
   stepsmenu.add_command(label="Test No4", command=Test_4)
   stepsmenu.add_command(label="Test No5", command=Test_5)
   stepsmenu.add_command(label="Test No6", command=Test_6)
   
   atpmenu.add_cascade(label="Step by step", menu=stepsmenu) 
   
   atpmenu.add_separator()
   atpmenu.add_command(label="Exit", command=exit_ATP)   
   menubar.add_cascade(label="Test Procedure", menu=atpmenu)

   reportmenu = Menu(menubar, tearoff=0)
   reportmenu.configure(font=('Arial',16,"bold"))
   reportmenu.add_command(label="View (display)", command=view_report)
   reportmenu.add_separator()
   reportmenu.add_command(label="Save to USB", command=save_USB)   
   reportmenu.add_command(label="Print...", command=print_report)   
   menubar.add_cascade(label="Reports", menu=reportmenu)

   helpmenu = Menu(menubar, tearoff=0)
   helpmenu.configure(font=('Arial',16,"bold"))
   helpmenu.add_command(label="Help...", command=help_window) 
   helpmenu.add_command(label="FAQ", command=FAQ_window) 
   helpmenu.add_command(label="Failures database", command=fail_database)
   helpmenu.add_separator()
   helpmenu.add_command(label="About...", command=about_window)   
   menubar.add_cascade(label="Help", menu=helpmenu)
   
   # display the menu
   atp.config(menu=menubar)
   print("===========================================================")
   print("Work Order: %s\nUUT_PN: %s\nUUT SN:%s\nTechnician:%s" % (UUT_wo.get(), UUT_pn.get(), UUT_sn.get(), WO_tech.get()))
   if radVar.get() == 1: print ("Work Requested: Bench Check")
   elif radVar.get() == 2: print ("Work Requested: Repair")
   elif radVar.get() == 3: print ("Work Requested: Overhaul")
   print("===========================================================")
   print("Acceptance Test Procedure")
   print("Liquid Crystal Display Control Display Unit")
   print("174101  Model 2584")
   print("ATA 34-61-14, ATLAS Test Specification 552353-10-01")
   print("===========================================================")
   from datetime import datetime
   d = datetime.now()
   print("{:%Y-%m-%d %H:%M:%S}".format(d))

   f = open("report.rep",'a')
   f.write("Acceptance Test Procedure\n")
   f.write("Liquid Crystal Display Control Display Unit\n")
   f.write("174101  Model 2584\n")
   f.write("ATA 34-61-14, ATLAS Test Specification 552353-10-01\n")
   f.write("Date:")
   f.write("{:%m-%d-%Y %H:%M:%S}\n".format(d))
   f.write("===========================================================\n")   
   f.write('WO:'+ UUT_wo.get())
   f.write("\nUUT_PN: %s\nUUT SN:%s\nTechnician:%s" % (UUT_pn.get(), UUT_sn.get(), WO_tech.get()))
   f.write("\n===========================================================\n")
   f = open("report.rep",'a')
    

#==========================================================================================
#window(CDU)===========================================================================================
 
# Add a title, size and disabling resize
CDU.attributes('-type', 'dock')
CDU.geometry('800x480+0+0')
CDU.title('ATA: 34-61-14,   Liquid Crystal Display Control Display Unit')
#CDU.overrideredirect(1)  #it removes the top badge
#Label(CDU, text="ATA: 34-61-14,   Liquid Crystal Display Control Display Unit").grid(row=0, column=3)

# Adding Labels and Entries widgets =======================================================================
Label(CDU, text="UUT PN:",font = ('Arial', 16,"bold"), fg = 'darkblue').grid(row=1, column=3, sticky='e')
Label(CDU, text="Work Order:",font = ('Arial', 16, "bold"), fg = 'darkblue').grid(row=2, column=3, sticky='e')
Label(CDU, text="UUT SN:",font = ('Arial', 16, "bold"), fg = 'darkblue').grid(row=3, column=3, sticky='e')
Label(CDU, text="Technician:",font = ('Arial', 16, "bold"), fg = 'darkblue').grid(row=5, column=3, sticky='e')

UUT_pn = tk.Entry(CDU, width=30)
UUT_wo = tk.Entry(CDU, width=30)
UUT_sn = tk.Entry(CDU, width=30)
WO_tech = tk.Entry(CDU, width=18)
WO_retrieve = tk.Entry(CDU, width=30)

UUT_pn.grid(row=1, column=4, sticky='e')
UUT_wo.grid(row=2, column=4, sticky='e')
UUT_sn.grid(row=3, column=4, sticky='e')
WO_tech.grid(row=5, column=4, sticky='w')

CDU.focus_force()

#WO = str(UUT_wo)
#f = open("{%WO}.rep",'w')
#f.write(WO)
   
# Radiobuttons ===========================================================================================
# Radiobuttons Callback
def radCall():
    radSel=radVar.get()
    if radSel == 1: CDU.configure()
    elif radSel == 2: CDU.configure()
    elif radSel == 3: CDU.configure()
    
# Create three Radiobuttons using one variable
radVar = IntVar() 
 
Label(CDU, text="Work Requested:",font = ('Arial', 16, "bold"), fg = 'darkblue'). grid(row=7, column=3, sticky='w')
benchtest = Radiobutton(CDU, text="Bench Test", font = ('Arial', 16, "bold"),variable=radVar, value=1, command=radCall)
benchtest.grid(row=7, column=4, columnspan=2, sticky='w')
repair = Radiobutton(CDU, text="Repair", font = ('Arial', 16, "bold"), variable=radVar, value=2, command=radCall)
repair.grid(row=8, column=4, columnspan=2, sticky='w')
overhaul = Radiobutton(CDU, text="Overhaul", font = ('Arial', 16, "bold"), variable=radVar, value=3, command=radCall)
overhaul.grid(row=9, column=4, columnspan=4, sticky='w')

# Canvas =================================================================================================
canvas_width = 291
canvas_height =387 
canvas = Canvas(CDU,
                width=canvas_width,
                height=canvas_height)
canvas.grid(row=1, column=0, rowspan=11, columnspan=2, sticky='n')
img = PhotoImage(file="174101_2.gif")
canvas.create_image(20,20, anchor=NW, image=img)

Label(CDU, text="").grid(row=12, column=18, sticky='e')

# Functions ===============================================================================================
Button(CDU, text="   Test Procedure    ",font = ('Arial', 16, "bold"), command = test_procedure).grid(row=10, column=4, sticky='e', padx=2)
Button(CDU, text=" Retrieve Report ",font = ('Arial', 16, "bold"), command = retrieve_report).grid(row=12, column=1, sticky='e')
Button(CDU, text=" About...",font = ('Arial', 16, "bold"), command = about).grid(row=15, column=1, sticky='e', padx=2)
Button(CDU, text=" Close Session ",font = ('Arial', 16, "bold"), command = ending_session).grid(row=15, column=4, sticky='e', padx=2)

window(CDU)

#==========================================================================================
#Start GUI
CDU.mainloop( ) 

Return to “Python”