[python] Použití Entry (TkInter widget) místo raw_inputu

petrofF petr0ff na seznam.cz
Pátek Březen 31 13:31:04 CEST 2017


Potřebuji v cyklu zpracovat seznam:

-konzolovému řešení odpovídá zhruba kód:
(rozdělení dlouhé SMSky:  "part_No.1" + "part_No.2" + "part_No.3....)
msgList  = ["part_No.1", "part_No.2", "part_No.3", ...atd...]

def send():
    for msg in msgList:           # <<< CYKL
        processMSG(msg)

def processMSG(message):
    while 1:
        urlForm.load()                                  #
httplib2.Http().request =>sync.
        showImage(urlForm.pictogramURL)   #
urllib.urlretrieve(URL,"file") =>sync.
        kod = raw_input("Opsat kod")
        resp = urlForm.send(message,kod)   # httplib2.Http().request
=>sync.
        if urlForm.responseOK(resp):
               break

-v TkInteru (callbacky):
Spuštění dávky (Button/command): self.send()
Zadání kontrolního kódu (Entry/bind keyevent=Enter): self.getCode()

class App(Tk):
    def __init__(self, master)
        Tk.__init__(self, master)
        ...
        Button(self.fSTAT,text="Odeslat
zprávu",command=self.send).pack()
        ...
        entry=Entry(frame2,  width=10)
        entry.pack(side=LEFT)
        entry.bind('<Return>', self.getCode)
        ...
    #CYKL S self.processMSG(msg)
    def send(self):                              ??????
    def processMSG(self,message):    ??????

    def getCode(self,event):
        entry = event.widget
        self.kod = entry.get() # uložení kódu
        ?????

Pro stručnost jsem vynechal ošetření chyb (při http connection errors)
Úvahy: iterator/generator? threads?


Další informace o konferenci Python