• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

PYPT

[Python] Scripts postados por PYPT

11 mensagens neste tópico

Olá a todos!

Este programa não foi feito por mim, mas eu decidi lhe adicionar algumas funções.

Este programa é um sorteador de nomes, onde o usuário insere 2 ou mais nomes e aparece o nome do sorteado.

#!/usr/bin/env python
# -*- coding: ISO-8859-1 -*-


inscritos = ['',]

from Tkinter import *
from Dialog import Dialog
import time
import random

class MainFrame(Frame):
   def __init__(self, parent=None):
       Frame.__init__(self, parent)
       self.master.title("Sorteia")

       self.text = StringVar()
       self.nome = StringVar()
       self.createWidgets()
       self.pack(padx=10, pady=10)


   def createWidgets(self):
       panel1 = Frame(self)
       nomeL = Label(panel1, text="Nome: (Digite somente letras)")
       nomeL.pack(side=LEFT)
       self.nomeE = Entry(panel1, \
           textvariable=self.nome, width=50)
       self.nomeE.pack(side=LEFT)
       self.nomeE.bind("<Return>", self.addEnter)
       addB = Button(panel1, text="  +  ", \
                     command=self.adicionar)
       addB.pack(side=LEFT)
       subB = Button(panel1, text="  -  ", \
                     command=self.remover)
       subB.pack(side=LEFT)
       panel1.pack(side=TOP)

       panel2 = Frame(self)

       scrollbar = Scrollbar(panel2, orient=VERTICAL)
       self.listbox = Listbox(panel2, \
                      yscrollcommand=scrollbar.set, \
                      font=("System", 10, "bold"))
       self.listbox.pack(side=LEFT, fill=BOTH, expand=1)
       scrollbar.config(command=self.listbox.yview)
       scrollbar.pack(side=RIGHT, fill=Y)

       panel2.pack(side=TOP, fill=BOTH, \
                             expand=Y, pady=10)

       panel3 = Frame(self)

       sorteiaB = Button(panel3, text="Sorteia",\
                         font=("Arial", 10, "bold"), \
                         command=self.sorteia)

       sorteiaB.pack(side=TOP, fill=BOTH, expand=Y)

       nomeSorteadoT = Label(panel3, \
                            textvariable=self.text, \
                            font=("Arial", 18, "bold"))
       nomeSorteadoT.pack(side=TOP, fill=BOTH, \
                            expand=Y, pady=20)

       self.nomeSorteadoT = nomeSorteadoT

       panel3.pack(side=TOP, fill=BOTH, expand=Y)

       for nome in inscritos:
               self.listbox.insert(END, nome)


   def sorteia(self):
       listaSorteia = self._getLista()
       self.nomeSorteadoT['fg'] = 'black'
       if not listaSorteia:
           return

       t = 0

       while len(listaSorteia) > 1:
           nome = random.choice(listaSorteia)
           self.after(t, self.text.set, nome)
           t += 1000 / len(listaSorteia)
           listaSorteia.remove(nome)

       sorteado = listaSorteia.pop()
       self.after(t + 1000, self.fimSorteio, sorteado)

   def fimSorteio(self, sorteado):
       self.text.set(sorteado)
       self.nomeSorteadoT['fg'] = 'red'
       self.bell()

   def _getLista(self):
       listbox = self.listbox

       lista = [listbox.get(i) for i in range(listbox.size())]
       return lista

   def adicionar(self):
       nome = self.nome.get()
       if not len(nome):
           Dialog(self, title="Erro!", \
                        text="Nome inválido", \
                        bitmap='error', \
                        default=0, \
                        strings=('OK',))
           return

       if nome in self._getLista():
           Dialog(self, title="Erro!", \
                        text="Já inscrito", \
                        bitmap='error', \
                        default=0, \
                        strings=('OK',))
           return

       self.listbox.insert(END, nome)
       self.limpaCampos()

   def addEnter(self, ev):
       self.adicionar()

   def remover(self):
       self.listbox.delete(ANCHOR)

   def limpaCampos(self):
       self.nome.set("")
       self.nomeE.focus()



def main():
   frm = MainFrame()
   frm.mainloop()

if __name__ == '__main__':
   main()

http://www.portugal-a-programar.pt/index.php?showtopic=10620


Para quem tem problemas em juntar Python + MySQL aqui vai um código-fonte para resolver seu problema:

#! /usr/bin/python
# Importa o módulo do MySQL
import MySQLdb
# Conectando
db = MySQLdb.connect(host="ipOuNomeServidor",user="usuariobanco", passwd="senha", db="nomeDaBase")
# Cria um cursor
cursor = db.cursor()
# Executa o SQL
cursor.execute("SELECT * FROM tabela")
# Pega o resultset como uma tupla
result = cursor.fetchall()
# Navega pelo resultset
for record in result:  print record[0] , "-->", record[1]

http://www.portugal-a-programar.pt/index.php?showtopic=10583


Este script transforma qualquer script em Python para um executável para Windows

from distutils.core import setup
import py2exe, sys, os

modulos = [sys.argv[1]]
sys.argv[1]="py2exe"

opcoes = {}
opcoes['py2exe'] = {}
opcoes['py2exe']['excludes'] = ["pywin", "pywin.debugger", "pywin.debugger.dbgcon", "pywin.dialogs", "pywin.dialogs.list"]
opcoes['py2exe']['packages'] = ["encodings"]

descricao = 'Programa'
versao = '1.0'

setup(name=descricao, console=modulos, zipfile="lib/shared.zip", description=descricao, version=versao)

http://www.portugal-a-programar.pt/index.php?showtopic=10622


Este programa cria senhas aleatórias a partir de uma série de caracteres.

Os caracteres que serão usados para criar a senha e o número de caracteres da mesma são selecionados pelo usuário.

Para a criação da senha em si é usada a função padrão do python random.choice(), que escolhe (óbvio, não? :) ) um item de uma sequência aleatoriamente, sendo que a sequência em questão são os caracteres em si.

Por isso o programa não leva em consideração senhas muito fáceis ou difíceis que ocasionalmente possam ser criadas.

A interface é construída em anygui.

try:
   import anygui as gui
except ImportError:
   from sys import stderr, exit
   print >> stderr, "ERRO: Interface anygui não disponível."
   exit(1)

from random import choice

###
### Função por onde todo o programa se desenrola
###

def criar_password(**kwds):
   carac = ""

   # Usei "abcd..." ao invés de string.lowercase porque está acontecendo algum bug...
   if Check_az.on == 1:
       carac += "abcdefghijklmnopqrstuvwxyz"
   if Check_AZ.on == 1:
       carac += "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
   if Check_09.on == 1:
       carac += "0123456789"

   if carac:
       tamanho = int(TamanhoTField.text)
       if tamanho < 5:
           Texto.text = "Tamanho muito pequeno"
       else:
           final = ""
           for p in xrange(tamanho):
               final += choice(carac)
           Texto.text = final # Pega a variável final e põe dentro de Texto.text .
   else:
       Texto.text = "Parametros invalidos"


###
### Interface Gráfica
###

Programa = gui.Application()

Janela = gui.Window(title="PassGenerator")
Janela.size = (180, 105)

Texto = gui.TextField()
Texto.width = Janela.width
Texto.hstretch = 1
Janela.add(Texto)

OKButton = gui.Button(text="Criar Senha")
OKButton.width = Janela.width - 20
OKButton.hstretch = 1
Janela.add(OKButton, top=(Texto, 5), left = 10)
gui.link(OKButton, criar_password)

Check_az = gui.CheckBox(text="a-z")
Check_az.width = 60
Check_az.on = 1
Janela.add(Check_az, top=(OKButton, 5), left = 5)

Check_AZ = gui.CheckBox(text="A-Z")
Check_AZ.width = 60
Janela.add(Check_AZ, top=(OKButton, 5), left=(Check_az, 5))

Check_09 = gui.CheckBox(text="0-9")
Check_09.width = 60
Janela.add(Check_09, top=(OKButton, 5), left=(Check_AZ, 5))

TamanhoLabel = gui.Label(text="Tamanho")
TamanhoLabel.width = 50
Janela.add(TamanhoLabel, top=(Check_az, 5), left = 5)

TamanhoTField = gui.TextField()
TamanhoTField.width = 50
TamanhoTField.height = 17
TamanhoTField.text = "5"
Janela.add(TamanhoTField, top=(Check_az, 5), left=(TamanhoLabel, 5))

Programa.add(Janela)

if __name__=="__main__":
   Programa.run()

http://www.portugal-a-programar.pt/index.php?showtopic=10624


Este programa é um instalador de ficheiros.

import os
comando=os.system
comando ('copy  a:\meumodulo.py  c:\Python25')
NOME=raw_input('Seu nome: ')
NOME='Python-'+NOME
comando ('md  c:\''+NOME)
comando ('copy  a:\meuprograma.py  c:\''+NOME)
abrir=os.startfile
abrir('a:/leiame.txt')

http://www.portugal-a-programar.pt/index.php?showtopic=11455

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Bom trabalho! :D

Olha, nos próximos utiliza a ferramenta GeSHi do fórum, para meter o código, assim o código aparece às cores (que giro). :]

Podes ver aqui como o fazer: Como utilizar o GeSHi.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Aqui fica todos os meus scripts em Python, quem os quiser copiar e criar outro tópico com eles por mim TUDO BEM mas deixem aqui o script, não o apaguem s.f.f.

:P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Muito sinceramente não vejo razão para tanto alarido. Não foi nada apagado, o que foi feito foi-te explicado por PM  :dontgetit: :hmm:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Eu prefiro sair deste fórum e me concentrar em um outro melhor!

Lamento que seja essa a tua decisão, ainda para mais quanto apenas foi separado um post teu dando ainda mais enfâse à tua participação no fórum, boa por sinal.

Aqui apagam sem perguntar e não gostam de "publicidade".

Bem, tendo em conta que já te tinha sido alertado isso numa outra thread, não percebo porque insistes. É a politica interna do fórum, tu ao registares-te no mesmo aceitaste essas mesmas condições. Não compreendo porquê reclamar.

Tenho pena de inicio gostava deste fórum e queria ajudar muito.

Também lamento que seja essa a tua decisão, ainda para mais quando foi um mal entendido que foi esclarecido logo de imediato. Não compreendo para quê tanto alarido, tal como o d_pintassilgo disse, mas é a tua decisão.

Nenhum utilizador é mais importante que os outros, nem mesmo um moderador é mais importante que um utilizador. As regras são Regras e são para se cumprir, o teu problema levanta-se apenas na parte da publicidade, não te posso dar qualquer razão tento em conta este ponto. Visto que o resto foi resolvido, e a teu favor, acho que já basta de lamurias e discussões.

Independentemente da tua decisão, obrigado por participares no fórum :P

abraços, HecKel

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

PYPT, o d_pintassilgo separou a thread. Faz uma thread por script. :P

É.

É escusado!

Eu prefiro sair deste fórum e me concentrar em um outro melhor!

Aqui apagam sem perguntar e não gostam de "publicidade".

Tenho pena de inicio gostava deste fórum e queria ajudar muito.

Agora quero me ir embora, estou FARTO.

PYPT, tiveste azar na tua entrada. Isto é uma comunidade bastante amigável e permissiva, fica mais uns tempos que não te vais arrepender. :)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
PYPT, tiveste azar na tua entrada.

Tens razão, também acho que tive azar... :starwars:

Isto é uma comunidade bastante amigável e permissiva, fica mais uns tempos que não te vais arrepender.

Se tu o dizes...  :D

Eu fico mais uns tempos  :P

A partir deste momento "Passado é Passado", estou a começar "de novo".  ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora