Table of Contents Programowanie GUI z Tkinter Jak zacząć ? Widgety Tkinter Przykład back Programowanie GUI z Tkinter Jak zacząć ? Podstawą (oprócz czytania dokumentacji) są przykłady. Dobry zbiór takich przykładów można znaleźć na stronie: https://github.com/Programmica/python-tkinter-examples Dobre wprowadzenie do Tkinter można znaleźć tutaj: http://thinkingtkinter.sourceforge.net/ Widgety Tkinter Przykłady użycia widgetów Tkinter Przykład Kod źródłowy: integral_with_gui.tar.gz Główny program z definicją interfejsu graficznego: <sxh python> “”“ GUI for program calculating integrals over a mesh. ”“” import tkinter from tkinter import ttk import itertools import argparse import quadratures from mesh import Mesh from integrands import Integrand from integrators import MeshIntegrator class Integrator(ttk.Frame): """The adders gui and functions.""" def __init__(self, parent, *args, **kwargs): ttk.Frame.__init__(self, parent, *args, **kwargs) self.root = parent self.init_gui() def on_quit(self): """Exits program.""" quit() def calculate(self): """Calculates the sum of the two inputted numbers.""" expression = self.expressin_entry.get() meshfile = 'mesh.dat' nnodes = 2 mesh = Mesh() mesh.load(meshfile) integrand = Integrand(expression) quadrature = quadratures.make_quadrature("GaussLegendre", nnodes) integrator = MeshIntegrator() integral = integrator.integrate(mesh, integrand, quadrature) self.answer_label['text'] = integral def init_gui(self): """Builds GUI.""" self.root.title('Integrator') self.root.option_add('*tearOff', 'FALSE') self.grid(column=0, row=0, sticky='nsew') self.menubar = tkinter.Menu(self.root) self.menu_file = tkinter.Menu(self.menubar) self.menu_file.add_command(label='Exit', command=self.on_quit) self.menu_edit = tkinter.Menu(self.menubar) self.menubar.add_cascade(menu=self.menu_file, label='File') self.menubar.add_cascade(menu=self.menu_edit, label='Edit') self.root.config(menu=self.menubar) self.expressin_entry = ttk.Entry(self, width=25) self.expressin_entry.grid(column=1, row = 2) self.calc_button = ttk.Button(self, text='Calculate', command=self.calculate) self.calc_button.grid(column=0, row=3, columnspan=4) self.answer_frame = ttk.LabelFrame(self, text='Integral', height=100) self.answer_frame.grid(column=0, row=4, columnspan=4, sticky='nesw') self.answer_label = ttk.Label(self.answer_frame, text='') self.answer_label.grid(column=0, row=0) # Labels that remain constant throughout execution. ttk.Label(self, text='Integrate function over a mesh').grid(column=0, row=0, columnspan=4) ttk.Label(self, text='Function').grid(column=0, row=2, sticky='w') ttk.Separator(self, orient='horizontal').grid(column=0, row=1, columnspan=4, sticky='ew') for child in self.winfo_children(): child.grid_configure(padx=5, pady=5) if name == 'main': root = tkinter.Tk() Integrator(root) root.mainloop() </sxh> pl/teaching/subjects/oop/lectures/gui.txt Last modified: 2017/10/02 15:37(external edit)