Kan ni hjälpa mig med koden till detta i Python

Här diskuteras programmering och utveckling
Användarvisningsbild
ZerQ
Inlägg: 160
Blev medlem: 01 aug 2007, 08:40
OS: Annat GNU/Linux
Ort: Ornsköldsvik
Kontakt:

Kan ni hjälpa mig med koden till detta i Python

Inlägg av ZerQ »

Hejsan

Jag har suttit och lekt med wxGlade för att skapa en GUI till mitt lilla program. Kruxet är att jag inte vet hur jag anropar eller gör så att knappar och menyer får liv i GUI läget. Jag har gjort ett program som skall skapa lösenord och spara dessa till en textfil. Nu vill jag ha detta i ett GUI program men vet inte hur jag skall anropa mellan mina funktioner och knappar, textfält osv.

Jag lägger upp koden till GUI, mina nuvarande funktioner och hoppas på lite hjälp

Main:

Kod: Markera allt

# Imported modules
import passPWC
import textPWC

# Main program
print '%s' % (textPWC.TEXT['valkommen'], )
print '%s' % (textPWC.TEXT['inledning'], )
passPWC.userMenu()
passPWC

Kod: Markera allt

# Imported modules
import filePWC
import random
import textPWC
import errorPWC

# Defining and assigning variables and constants

# A block of functions
def createPassWord():
    '''This function creates passwords

    The functions takes one argument and creates
    a password with all characters from the alfabeth
    and some special signs along with numbers.
    The argument states how many chars there is to
    be created in the password.'''
    # Create local variables
    i = 0
    f1 = []

    # Use a while loop to create a password
    nChars, nPasses = userInput()
    if nPasses > 1:
        while i < nPasses:
            f1 = []
            j = 0
            while j < nChars:
                f1.append(textPWC.TECKEN[random.randint(0, 79)])
                j += 1
            print '%s %s' % (textPWC.TEXT['utskrift'], ''.join(f1))
            filePWC.fileSavePassWord(f1, nPasses, i, nChars)
            i += 1
    else:
        print '%s %s' % (textPWC.TEXT['utskrift'], ''.join(f1))
        filePWC.fileSavePassWord(f1, nPasses, i, nChars)

    # Return to the usermenu
    print '\n'
    userMenu()





def userInput():
    '''This function handles user input

    The function takes two values from the user
    and returning them to the calling function. We
    also tries if the inputs are correct and usable
    to the rest of the program.'''
    # Create local variables
    numSigns = None
    numPasses = None

    # Get the values from the user and check the inputs
    print '%s' % (textPWC.TEXT['antal'], )
    while True:
        try:
            numSigns = int(raw_input('>>> '))
            if numSigns < 1:
                raise errorPWC.shortInputOne(numSigns, 1)
        except ValueError:
            print '%s' % (textPWC.TEXT['generellt'], )
        except errorPWC.shortInputOne, x:
            print '%s' % (textPWC.TEXT['felAntal'], )
        else:
            break 

    print '%s' % (textPWC.TEXT['langd'], )
    while True:
        try:
            numPasses = int(raw_input('>>> '))
            if numPasses < 3:
                raise errorPWC.shortInputThree(numPasses, 3)
        except ValueError:
            print '%s' % (textPWC.TEXT['generellt'], )
        except errorPWC.shortInputThree, x:
            print '%s' % (textPWC.TEXT['felLangd'], )
        else:
            break
        
        
    # Return these values to the calling function
    return numPasses, numSigns




def userExit():
    '''This function quits the program

    ttttt'''
    print '%s' % (textPWC.TEXT['avslutKorrekt'], )





def userMenu():
    '''This function prints a menu

    This function prints a menu so the user can
    make a choice and execute that choice. The
    function doesnt need any argument.'''
    # Define and assign local variables and constants
    MENU_ITEMS = {'1' : createPassWord, '2' : filePWC.fileRead, '3' : userExit}
    
    # Print the menu and catch the users menu choice    
    for i in ((1, 'Skapa en eller flera lösenord'),
                  (2, 'Skriv ut filen med lösenorden'),
                  (3, 'Avsluta programmet')):
        print '%i: %s' % i

    while True:
        menuChoice = raw_input('Ange menyval, tryck enter: ')
        if menuChoice == '1' or menuChoice == '2' or menuChoice == '3':
            MENU_ITEMS[menuChoice]()
            break
        else:
            print '%s' % (textPWC.TEXT['felmenu'], )
filePWC

Kod: Markera allt

# Imported modules
import pwd
import os
from time import localtime, strftime
import textPWC
import passPWC

# Defining and assigning variables and constants
SOURCE = pwd.getpwuid(os.getuid())[5] + os.sep + 'Passwordlist.pwc'
global SOURCE

# A block of functions
def fileRead():
    '''This function reads a file and prints it

    mmmmm'''
    # Read the content of the file and print it
    try:
        f = open(SOURCE, 'ru')
        try:
            for line in f:
                print '%s' % line,
        finally:
            f.close()
            passPWC.userMenu()
    except IOError:
        print '%s' % (textPWC.TEXT['fileError'], )





def fileSavePassWord(f1, nPasses, i, nChars):
    '''This function save the password to a file

    The function takes three arguments which is
    a list created by the function createPassWord,
    a counter and the value of how many password.
    The file is saved as a textfile and it contains
    every password created over time.'''
    # Save the content of the list and close the file
    try:
        f = open(SOURCE, 'au')
        try:
            if i == 0:
                f.write(textPWC.TEXT['overskrift'])
                f.write(str(nChars))
                f.write(' tecken, den ')
                f.write(strftime("%d %b %Y, tidpunkt %H:%M\n"))
            f.write(''.join(f1))
            f.write('\n')
            if (i + 1) == nPasses:
                f.write('\n')
            
        finally:
            f.close()
    except IOError:
        print '%s' % (textPWC.TEXT['fileError'], )
errorPWC

Kod: Markera allt

# Huvudprogrammet
class shortInputOne(Exception):
    def __init__(self, length, atleast):
        Exception.__init__(self)
        self.length = length
        self.atleast = atleast


class shortInputThree(Exception):

    def __init__(self, length, atleast):
        Exception.__init__(self)
        self.length = length
        self.atleast = atleast
textPWC

Kod: Markera allt

# Defining and assigning variables and constants
TECKEN = ('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z',
                      'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z',
                      '1', '2', '3', '4', '5', '6', '7', '8', '9', '0', '!', '#', '%', '&', '(', ')', '=', '?', '+', '*', '@', '$', '£', '{', '[', ']', '}', '/')
TEXT = {'valkommen' : 'Välkommen till ZerQs Password creator',
                'inledning' : 'Detta program skapar ett lösenord som är baserat på alla \ntecken i alfabetet samt specialtecken.',
                'antal' : 'Vänligen mata in hur många lösenord du vill skapa, avsluta med enter.',
                'langd' : 'Vänligen mata in antal tecken som lösenordet skall bestå av, avsluta med enter.',
                'overskrift' : 'Följande lösenord har skapats med ',
                'utskrift' : 'Följande lösen har skapats: ',
                'felAntal' : 'Du har angett ett för litet tal, vänligen mata in ett nytt och avsluta med enter!',
                'felLangd' : 'Du har angett ett för lågt tal i längden på lösenordet, minium är 3 tecken, ange ett nytt!',
                'generellt' : 'Du har antagligen angett ett tecken istället för en siffra, skriv en siffra denna gång istället',
                'avslutKorrekt' : 'Tack för att ni har använt Zerq''s Password creator V0.3',
                'avslutFel' : 'Ja det har man ju kunnat tänka sig, du måste skriva fel på slutet. Programmet avslutas ändå, Tack!',
                'run' : 'Vill du skapa flera lösenord? j/J för ja eller n/N för att avsluta!',
                'filOverskrift' : 'Vill du använda default filen "Passwordlist.txt" eller vill du ange en egen fil, d = default, e = egen fil!',
                'angeFil' : 'Skriv in namnet på filen du vill skapa, avsluta med enter.',
                'felmenu' : 'Du har angivit ett felaktigt menyval, försök igen, 1, 2 eller 3.',
                'fileError' : 'Filen finns inte, du kan inte spara lösenorden...',
                'fileChoice' : 'Välj vilken fil du vill använda, skriv in filens namn med eller utan .pwc'}

Och sist GUI koden

Kod: Markera allt

# generated by wxGlade 0.6.3 on Tue Nov 18 20:21:07 2008

import wx


# begin wxGlade: extracode

# end wxGlade



class MyFrame(wx.Frame):
    def __init__(self, *args, **kwds):
        # begin wxGlade: MyFrame.__init__
        kwds["style"] = wx.CAPTION|wx.CLOSE_BOX|wx.MINIMIZE_BOX
        wx.Frame.__init__(self, *args, **kwds)
        
        # Menu Bar
        self.frame_1_menubar = wx.MenuBar()
        wxglade_tmp_menu = wx.Menu()
        wxglade_tmp_menu.Append(wx.NewId(), "Avsluta", "", wx.ITEM_NORMAL)
        self.frame_1_menubar.Append(wxglade_tmp_menu, "Arkiv")
        wxglade_tmp_menu = wx.Menu()
        wxglade_tmp_menu.Append(wx.NewId(), "Om programmet", "", wx.ITEM_NORMAL)
        self.frame_1_menubar.Append(wxglade_tmp_menu, u"Hjälp")
        self.SetMenuBar(self.frame_1_menubar)
        # Menu Bar end
        self.frame_1_statusbar = self.CreateStatusBar(1, 0)
        self.label_1 = wx.StaticText(self, -1, u"Välj antal lösenord som skall skapas.")
        self.spin_ctrl_1 = wx.SpinCtrl(self, -1, "0", min=1, max=1000)
        self.label_2 = wx.StaticText(self, -1, u"Välj antal tecken i lösenordet.")
        self.spin_ctrl_2 = wx.SpinCtrl(self, -1, "0", min=3, max=250)
        self.checkbox_1 = wx.CheckBox(self, -1, u"Vill du spara lösenorden till en fil?")
        self.static_line_1 = wx.StaticLine(self, -1, style=wx.LI_VERTICAL)
        self.button_2 = wx.Button(self, -1, u"Skapa lösenord")
        self.button_3 = wx.Button(self, -1, "Avsluta")

        self.__set_properties()
        self.__do_layout()
        # end wxGlade

    def __set_properties(self):
        # begin wxGlade: MyFrame.__set_properties
        self.SetTitle("ZerQ's Password Creator")
        self.SetSize((368, 195))
        self.frame_1_statusbar.SetStatusWidths([-1])
        # statusbar fields
        frame_1_statusbar_fields = [u"Inga lösenord är skapade "]
        for i in range(len(frame_1_statusbar_fields)):
            self.frame_1_statusbar.SetStatusText(frame_1_statusbar_fields[i], i)
        self.button_2.SetMinSize((115, 32))
        self.button_3.SetMinSize((115, 32))
        # end wxGlade

    def __do_layout(self):
        # begin wxGlade: MyFrame.__do_layout
        sizer_1 = wx.BoxSizer(wx.VERTICAL)
        sizer_2 = wx.BoxSizer(wx.HORIZONTAL)
        sizer_5 = wx.BoxSizer(wx.HORIZONTAL)
        sizer_6 = wx.BoxSizer(wx.VERTICAL)
        sizer_3 = wx.BoxSizer(wx.VERTICAL)
        sizer_3.Add((240, 10), 0, 0, 0)
        sizer_3.Add(self.label_1, 0, 0, 0)
        sizer_3.Add(self.spin_ctrl_1, 0, 0, 0)
        sizer_3.Add((240, 10), 0, 0, 0)
        sizer_3.Add(self.label_2, 0, 0, 0)
        sizer_3.Add(self.spin_ctrl_2, 0, 0, 0)
        sizer_3.Add((240, 10), 0, 0, 0)
        sizer_3.Add(self.checkbox_1, 0, 0, 0)
        sizer_2.Add(sizer_3, 1, wx.EXPAND, 0)
        sizer_5.Add(self.static_line_1, 0, wx.EXPAND, 0)
        sizer_6.Add((125, 60), 0, 0, 0)
        sizer_6.Add(self.button_2, 0, wx.ALIGN_CENTER_HORIZONTAL, 0)
        sizer_6.Add((125, 10), 0, 0, 0)
        sizer_6.Add(self.button_3, 0, wx.ALIGN_CENTER_HORIZONTAL, 0)
        sizer_6.Add((125, 10), 0, 0, 0)
        sizer_5.Add(sizer_6, 1, wx.EXPAND, 0)
        sizer_2.Add(sizer_5, 0, wx.EXPAND, 0)
        sizer_1.Add(sizer_2, 1, wx.EXPAND, 0)
        self.SetSizer(sizer_1)
        self.Layout()
        # end wxGlade

# end of class MyFrame


if __name__ == "__main__":
    app = wx.PySimpleApp(0)
    wx.InitAllImageHandlers()
    frame_1 = MyFrame(None, -1, "")
    app.SetTopWindow(frame_1)
    frame_1.Show()
    app.MainLoop()

Återgå till "Programmering och webbdesign"