Advertisement
gregwa

Tkinter Widget Demo number 2

Oct 6th, 2011
937
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 10.56 KB | None | 0 0
  1. #widgetdemo2f.py (full demo program)
  2. import sys
  3. from Tkinter import *
  4. import ttk
  5. #import tkMessageBox
  6. #import tkFont
  7. #import tkFileDialog
  8.  
  9. class WidgetDemo2:
  10.     #------------------------------------------------------------------
  11.     #
  12.     #------------------------------------------------------------------
  13.     def __init__(self,master = None):
  14.         self.DefineVars()
  15.         f = self.BuildWidgets(master)
  16.         self.PlaceWidgets(f)
  17.  
  18.        
  19.     #------------------------------------------------------------------
  20.     #
  21.     #------------------------------------------------------------------    
  22.     def DefineVars(self):
  23.         self.cmbo1Val = StringVar()
  24.         self.c1Vals = ['None','Option 1','Option 2','Option 3']
  25.        
  26.         self.spinval = StringVar()
  27.        
  28.         self.spinval2 = StringVar()
  29.         self.btnStatus = False
  30.         self.pbar2val = StringVar()
  31.        
  32.        
  33.     def FileNew(self):
  34.         print "Menu - File New"
  35.     def FileOpen(self):
  36.         print "Menu - File Open"
  37.     def FileSave(self):
  38.         print "Menu - File Save"
  39.     def EditCut(self):
  40.         print "Menu - Edit Cut"
  41.     def EditCopy(self):
  42.         print "Menu - Edit Copy"
  43.     def EditPaste(self):
  44.         print "Menu - Edit Paste"
  45.     def HelpAbout(self):
  46.         print "Menu - Help About"
  47.        
  48.     #------------------------------------------------------------------
  49.     #
  50.     #------------------------------------------------------------------    
  51.     def BuildWidgets(self,master):
  52.         frame = Frame(master)
  53.         #==============================================================
  54.         #                          MENU STUFF
  55.         #==============================================================
  56.         # Create the menu bar
  57.         self.menubar = Menu(master)
  58.         # Create the File Pulldown, and add it to the menu bar
  59.         filemenu = Menu(self.menubar, tearoff = 0)
  60.         filemenu.add_command(label = "New", command = self.FileNew)
  61.         filemenu.add_command(label = "Open", command = self.FileOpen)
  62.         filemenu.add_command(label = "Save", command = self.FileSave)
  63.         filemenu.add_separator()
  64.         filemenu.add_command(label = "Exit", command = root.quit)
  65.         self.menubar.add_cascade(label = "File", menu = filemenu)
  66.         # Create the Edit Pulldown
  67.         editmenu = Menu(self.menubar, tearoff = 0)
  68.         editmenu.add_command(label = "Cut", command = self.EditCut)
  69.         editmenu.add_command(label = "Copy", command = self.EditCopy)
  70.         editmenu.add_command(label = "Paste", command = self.EditPaste)
  71.         self.menubar.add_cascade(label = "Edit", menu = editmenu)
  72.         # Create the Help Pulldown
  73.         helpmenu = Menu(self.menubar, tearoff=0)
  74.         helpmenu.add_command(label = "About", command = self.HelpAbout)
  75.         self.menubar.add_cascade(label = "Help", menu = helpmenu)
  76.          # Now, display the menu
  77.         master.config(menu = self.menubar)
  78.         #==============================================================
  79.         #                  End of Menu Stuff
  80.         #==============================================================
  81.         self.f1 = Frame(frame,
  82.                         relief = SUNKEN,
  83.                         borderwidth = 2,
  84.                         width = 500
  85.                         )
  86.         self.lblcb = Label(self.f1, text = "Combo Box: ")
  87.         self.cmbo1 = ttk.Combobox(self.f1,
  88.                                   height = "19",
  89.                                   width = 20,
  90.                                   textvariable = self.cmbo1Val
  91.                                  )
  92.         self.cmbo1['values'] = self.c1Vals
  93.         # Bind the virtual event to the callback
  94.         self.cmbo1.bind("<<ComboboxSelected>>",self.cmbotest)
  95.         self.fsep = Frame(self.f1,
  96.                           width = 140,
  97.                           height = 2,
  98.                           relief = RIDGE,
  99.                           borderwidth = 2
  100.                           )
  101.         self.lblsc = Label(self.f1, text = "Spin Control:")
  102.         self.spin1 = Spinbox(self.f1,
  103.                              from_ = 1.0,
  104.                              to = 10.0,
  105.                              width = 3,
  106.                              textvariable = self.spinval,
  107.                              wrap=True
  108.                              )
  109.         #=======================================
  110.         # Progress Bar Stuff
  111.         #=======================================
  112.         self.frmPBar = Frame(self.f1,
  113.                         relief = SUNKEN,
  114.                         borderwidth = 2
  115.                         )
  116.  
  117.         self.lbl0 = Label(self.frmPBar,
  118.                         text = "Progress Bars"
  119.                         )
  120.         self.lbl1 = Label(self.frmPBar,
  121.                         text = "Indeterminate",
  122.                         anchor = 'e'
  123.                         )
  124.         self.pbar = ttk.Progressbar(self.frmPBar,
  125.                         orient = HORIZONTAL,
  126.                         length = 100,
  127.                         mode = 'indeterminate',
  128.                         maximum = 100
  129.                         )
  130.         self.btnptest = Button(self.frmPBar,
  131.                         text = "Start",
  132.                         command = self.TestPBar
  133.                         )
  134.         self.lbl2 = Label(self.frmPBar,
  135.                         text = "Determinate"
  136.                         )
  137.         self.pbar2 = ttk.Progressbar(self.frmPBar,
  138.                         orient = HORIZONTAL,
  139.                         length = 100,
  140.                         mode = 'determinate',
  141.                         variable = self.pbar2val
  142.                         )
  143.         self.spin2 = Spinbox(self.frmPBar,
  144.                         from_ = 1.0,
  145.                         to = 100.0,
  146.                         textvariable = self.spinval2,
  147.                         wrap = True,
  148.                         width = 5,
  149.                         command = self.Spin2Do
  150.                         )
  151.         #=======================================
  152.         #              NOTEBOOK
  153.         #=======================================
  154.         self.nframe = Frame(self.f1,
  155.                             relief = SUNKEN,
  156.                             borderwidth = 2,
  157.                             width = 500,
  158.                             height = 300
  159.                             )
  160.         self.notebook = ttk.Notebook(self.nframe,
  161.                                      width = 490,
  162.                                      height = 290
  163.                                      )
  164.         self.p1 = Frame(self.notebook)
  165.         self.p2 = Frame(self.notebook)
  166.         self.notebook.add(self.p1,text = 'Page One')
  167.         self.notebook.add(self.p2,text = 'Page Two')
  168.         self.lsp1 = Label(self.p1,
  169.                           text = "This is a label on page number 1",
  170.                           padx = 3,
  171.                           pady = 3
  172.                           )
  173.        
  174.         return frame
  175.        
  176.     #------------------------------------------------------------------
  177.     #
  178.     #------------------------------------------------------------------
  179.     def PlaceWidgets(self,master):
  180.         frame = master
  181.         frame.grid(column = 0, row = 0)
  182.        
  183.         self.f1.grid(column = 0,row = 0)
  184.         self.lblcb.grid(column = 0,row = 2)
  185.         self.cmbo1.grid(column = 1,
  186.                         row = 2,
  187.                         columnspan = 4,
  188.                         pady = 2
  189.                         )
  190.         self.fsep.grid(column = 0,
  191.                        row = 3,
  192.                        columnspan = 8,
  193.                        sticky = 'we',
  194.                        padx = 3,
  195.                        pady = 3
  196.                        )
  197.         self.lblsc.grid(column = 0, row = 4)
  198.         self.spin1.grid(column = 1,
  199.                         row = 4,
  200.                         pady = 2
  201.                         )
  202.        
  203.         # Progress Bar
  204.         self.frmPBar.grid(column = 0,
  205.                         row = 5,
  206.                         columnspan = 8,
  207.                         sticky = 'nsew',
  208.                         padx = 3,
  209.                         pady = 3
  210.                         )
  211.         self.lbl0.grid(column = 0, row = 0)
  212.         self.lbl1.grid(column = 0,
  213.                        row = 1,
  214.                        pady = 3
  215.                        )
  216.         self.pbar.grid(column = 1, row = 1)
  217.         self.btnptest.grid(column = 3, row = 1)
  218.         self.lbl2.grid(column = 0,
  219.                        row = 2,
  220.                        pady = 3
  221.                        )
  222.         self.pbar2.grid(column = 1, row = 2)
  223.         self.spin2.grid(column = 3, row = 2)
  224.         self.nframe.grid(column = 0,
  225.                          row = 6,
  226.                          columnspan = 8,
  227.                          rowspan = 7,
  228.                          sticky = 'nsew'
  229.                          )
  230.         self.notebook.grid(column = 0,
  231.                            row = 0,
  232.                            columnspan = 11,
  233.                            sticky = 'nsew'
  234.                            )
  235.         self.lsp1.grid(column = 0,row = 0)
  236.         self.lsp2 = Label(self.p2,
  237.                           text = 'This is a label on PAGE 2',
  238.                           padx = 3,
  239.                           pady = 3
  240.                           ).grid(
  241.                                  column = 0,
  242.                                  row = 1
  243.                                  )
  244.  
  245.     def cmbotest(self,p1):
  246.         print self.cmbo1Val.get()
  247.        
  248.     def TestPBar(self):
  249.         if self.btnStatus == False:
  250.             self.btnptest.config(text="Stop")
  251.             self.btnStatus = True
  252.             self.pbar.start(10)
  253.         else:
  254.             self.btnptest.config(text="Start")
  255.             self.btnStatus = False
  256.             self.pbar.stop()
  257.    
  258.     def Spin2Do(self):
  259.         v = self.spinval2.get()
  260.         print v
  261.         #self.pbar2.value = float(v)
  262.         self.pbar2val.set(v)
  263.        
  264. if __name__ == '__main__':
  265.     def Center(window):
  266.         # Get the width and height of the screen
  267.         sw = window.winfo_screenwidth()
  268.         sh = window.winfo_screenheight()        
  269.         # Get the width and height of the window
  270.         rw = window.winfo_reqwidth()
  271.         rh = window.winfo_reqheight()
  272.         xc = (sw-rw)/2
  273.         yc = (sh-rh)/2
  274.         print "{0}x{1}".format(rw,rh)
  275.         window.geometry("%dx%d+%d+%d"%(rw,rh,xc,yc))
  276.         window.deiconify()
  277.    
  278.     root = Tk()
  279.     root.title('More Widgets Demo')
  280.     demo = WidgetDemo2(root)  
  281.     root.after(13,Center,root)
  282.     root.mainloop()                
  283.  
  284.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement