Interfaces gráficas
Interfaces gráficas de usuário
A maioria dos programas hoje em dia recebem entradas de uma interface gráfica de usuário (graphical user interfaces - GUI), que consiste em janelas com elementos gráficos como botões, menus, campos de texto, etc.
Porque no aprendemos a fazer tais programas?
- GUI demandam uma programação extra muito complicada;
- Programadores experientes preferem a entrada por linha de comando;
- Programas com entradas por linha de comando ou arquivos podem ser facilmente combinados uns com os outros, o que é difícil em programas baseados em GUI.
Entrada por linha de comando provavelmente vai servir para todos os seus propósitos na sua pesquisa de pós-graduação!
A não ser que sua pesquisa envolva diretamente a programação com GUI...
Então, vamos dar uma olhada com se faz!
Um programa de conversão Celsius-Fahrenheit com GUI
Os valores em Celsius podem ser colocados como números em um campo e clicando-se em um botão "é" calcula-se a correspondente temperatura em Fahrenheit.
Para isso, vamos usar o pacote GUI do python chamado Tkinter:
import Tkinter as tk
#from Tkinter import *
root = tk.Tk() #iniciando o Tkinter
#criando o campo de entrada à esquerda
C_entry = tk.Entry(root, width=4)
C_entry.pack(side='left')
#criando o texto Celsius logo após o campo de entrada
Cunit_label = tk.Label(root, text='Celsius')
Cunit_label.pack(side='left')
def compute():
C = float(C_entry.get())
F = (9./5)*C + 32
F_label.configure(text='%g' % F)
#criando o botão para calcular o resultado
compute = tk.Button(root, text=' é ', command=compute)
compute.pack(side='left', padx=4)
#criando um texto para a resposta
F_label = tk.Label(root, width=4)
F_label.pack(side='left')
#criando o texto Fahrenheit
Funit_label = tk.Label(root, text='Fahrenheit')
Funit_label.pack(side='left')
root.mainloop()
Resulta em:
Um exemplo um pouco mais complexo usando o PyQt4
Para ilustrar um pouco mais sobre GUIs, segue um exemplo usando o PyQt4 para avaliar expressões
from __future__ import division
import sys
from math import *
from PyQt4.QtCore import *
from PyQt4.QtGui import *
class Form(QDialog):
def __init__(self, parent=None):
super(Form, self).__init__(parent)
self.browser = QTextBrowser()
self.lineedit = QLineEdit(u"Digite uma expressão e pressione enter")
self.lineedit.selectAll()
layout = QVBoxLayout()
layout.addWidget(self.browser)
layout.addWidget(self.lineedit)
self.setLayout(layout)
self.lineedit.setFocus()
self.connect(self.lineedit, SIGNAL("returnPressed()"), self.updateUi)
self.setWindowTitle("Calcular")
def updateUi(self):
try:
text = self.lineedit.text().encode('utf-8')
self.browser.append(u"%s = %s" % (text, eval(text)))
except:
self.browser.append(u"%s é inválido!" % text)
app = QApplication(sys.argv)
form = Form()
form.show()
app.exec_()
Resulta em: