コード例 #1
0
    dec = decodeAddrHeader(addr)  # i18n(1) -> str
    enc = encodeAddrHeader(dec)  # str     -> i18n(2)
    rec = decodeAddrHeader(enc)  # i18n(2) -> str
    t.insert('end', addr + '\n')
    t.insert('end', dec + '\n')
    t.insert('end', enc + '\n')
    t.insert('end', rec + '\n')
    t.insert('end',
             'encoded: ' + ('same' if enc == addr else 'differs') + '\n')
    t.insert('end',
             'decoded: ' + ('same' if rec == dec else '**differs**') + '\n\n')

t.insert('end', '\n' + '-' * 100 + '\n\n')
t.insert('end', '[test encoding addrs, multi/mixed addrs\n\n')
for (ix, addr) in enumerate(addrs):  # multi addrs, mix encooding
    addr += ', ' + (addr if ix == 0 else addrs[ix - 1])
    dec = decodeAddrHeader(addr)  # i18n(1) -> str
    enc = encodeAddrHeader(dec)  # str     -> i18n(2)
    rec = decodeAddrHeader(enc)  # i18n(2) -> str
    t.insert('end', addr + '\n')
    t.insert('end', dec + '\n')
    t.insert('end', enc + '\n')
    t.insert('end', rec + '\n')
    t.insert('end',
             'encoded: ' + ('same' if enc == addr else 'differs') + '\n')
    t.insert('end',
             'decoded: ' + ('same' if rec == dec else '**differs**') + '\n\n')

t.pack()
t.mainloop()
コード例 #2
0
dataQueue = queue.Queue()

def producer(id):
	for i in range(5):
		time.sleep(0.1)
		print('put')
		dataQueue.put('[producer id=%d, count=%d]' %(id, i))

def consumer(root):
	try:
		print('get')
		data = dataQueue.get(block=False)
	except queue.Empty:
		pass
	else:	
		root.insert('end', 'consumer got => %s\n' % str(data))
		root.see('end')
	root.after(250, lambda: consumer(root))

def makethreads():
	for i in range(4):
		_thread.start_new_thread(producer, (i,))

if __name__ == '__main__':
	from tkinter.scrolledtext import ScrolledText
	root = ScrolledText()
	root.pack()
	root.bind('<Button-1>', lambda event: makethreads())
	consumer(root)
	root.mainloop()
コード例 #3
0
        time.sleep(0.1)
        print('put')
        dataQueue.put('[producer id=%d, count=%d]' % (id, i))


def consumer(root):
    try:
        print('get')
        data = dataQueue.get(block=False)
    except queue.Empty:
        pass
    else:
        root.insert('end', 'consumer got => %s\n' % str(data))
        root.see('end')
    root.after(250, lambda: consumer(root))  # 4 times per sec


def makethreads():
    for i in range(4):
        _thread.start_new_thread(producer, (i, ))


if __name__ == '__main__':
    # main GUI thread: spawn batch of worker threads on each mouse click
    from tkinter.scrolledtext import ScrolledText
    root = ScrolledText()
    root.pack()
    root.bind('<Button-1>', lambda event: makethreads())
    consumer(root)  # start queue check loop in main thread
    root.mainloop()  # pop-up window, enter tk event loop
コード例 #4
0
ファイル: queuetest-gui.py プロジェクト: zhongjiezheng/python
dataQueue = queue.Queue()

def producer(id):
	for i in range(5):
		time.sleep(0.1)
		print('put')
		dataQueue.put('[producer id=%d, count=%d]' % (id, i))

def consumer(root):
	try:
		print('get')
		data = dataQueue.get(block=False)
	except queue.Empty:
		pass
	else:
		root.insert('end', 'consumer got => %s\n' % str(data))
		root.see('end')
	root.after(250, lambda: consumer(root))

def makethreads():
	for i in range(4):
		_thread.start_new_thread(producer, (i,))

if __name__ == '__main__':
	from tkinter.scrolledtext import ScrolledText
	root = ScrolledText()
	root.pack()
	root.bind('<Button-1>', lambda event: makethreads())
	consumer(root)
	root.mainloop()
コード例 #5
0
t.insert('end', '[test encoding addrs, and decoding back again (sends + later recvs)]\n\n')
for addr in addrs:
    dec  = decodeAddrHeader(addr)    # i18n(1) -> str
    enc  = encodeAddrHeader(dec)     # str     -> i18n(2)
    rec  = decodeAddrHeader(enc)     # i18n(2) -> str
    t.insert('end', addr + '\n')
    t.insert('end', dec  + '\n')
    t.insert('end', enc  + '\n')
    t.insert('end', rec  + '\n')
    t.insert('end', 'encoded: ' + ('same' if enc == addr else 'differs') + '\n')
    t.insert('end', 'decoded: ' + ('same' if rec == dec  else '**differs**') + '\n\n')


t.insert('end', '\n' + '-'*100 + '\n\n')
t.insert('end', '[test encoding addrs, multi/mixed addrs\n\n')
for (ix, addr) in enumerate(addrs): # multi addrs, mix encooding
    addr += ', ' + (addr if ix == 0 else addrs[ix-1])
    dec  = decodeAddrHeader(addr)    # i18n(1) -> str
    enc  = encodeAddrHeader(dec)     # str     -> i18n(2)
    rec  = decodeAddrHeader(enc)     # i18n(2) -> str
    t.insert('end', addr + '\n')
    t.insert('end', dec  + '\n')
    t.insert('end', enc  + '\n')
    t.insert('end', rec  + '\n')
    t.insert('end', 'encoded: ' + ('same' if enc == addr else 'differs') + '\n')
    t.insert('end', 'decoded: ' + ('same' if rec == dec  else '**differs**') + '\n\n')


t.pack()
t.mainloop()
コード例 #6
0
ファイル: base_0.py プロジェクト: doudoudzj/tkinter-learn
#!/usr/bin/env python3
# -*- coding: UTF-8 -*-
'''极简模式'''

from tkinter.scrolledtext import ScrolledText

txt = ScrolledText()
txt.pack(fill='both', side='left', expand=True)
txt.mainloop()
コード例 #7
0
    # thread's main action
    def threadaction(id, reps, progress):       # what the thread does
        for i in range(reps):
            time.sleep(1)
            if progress: progress(i)            # progress callback: queued
        if id % 2 == 1: raise Exception         # odd numbered: fail

    # thread exit/progress callbacks: dispatched off queue in main thread
    def threadexit(myname):
        text.insert('end', '%s\texit\n' % myname)
        text.see('end')

    def threadfail(exc_info, myname):
        text.insert('end', '%s\tfail\t%s\n' % (myname, exc_info[0]))
        text.see('end')

    def threadprogress(count, myname):
        text.insert('end', '%s\tprog\t%s\n' % (myname, count))
        text.see('end')
        text.update()   # works here: run in main thread

    # make enclosing GUI and start timer loop in main thread
    # spawn batch of worker threads on each mouse click: may overlap
    
    text = ScrolledText()
    text.pack()
    threadChecker(text)                 # start thread loop in main thread
    text.bind('<Button-1>',             # 3.x need list for map, range ok
              lambda event: list(map(onEvent, range(6))) )
    text.mainloop()                     # pop-up window, enter tk event loop
コード例 #8
0
ファイル: threadtools.py プロジェクト: flwwsg/learnpy
                    context=(myname, ),
                    onExit=threadexit,
                    onFail=threadfail,
                    onProgress=threadprogress)

    def threadaction(id, reps, progress):
        for i in range(reps):
            time.sleep(1)
            if progress: progress(i)
        if id % 2 == 1:
            raise Exception

    def threadexit(myname):
        text.insert('end', '%s\ttext\n' % myname)
        text.see('end')

    def threadfail(exc_info, myname):
        text.insert('end', '%s\tfail\t%s\n' % (myname, exc_info[0]))
        text.see('end')

    def threadprogress(count, myname):
        text.insert('end', '%s\tprog\t%s\n' % (myname, count))
        text.see('end')
        text.update()

    text = ScrolledText()
    text.pack()
    threadChecker(text)
    text.bind('<Button-1>', lambda event: list(map(onEvent, range(6))))
    text.mainloop()
コード例 #9
0
ファイル: threadtools.py プロジェクト: death-finger/Scripts
    def onEvent(i):
        myname = 'thread-%s' % i
        startThread(action=threadaction, args=(i, 3),
                    context=(myname, ), onExit=threadexit,
                    onFail=threadfail, onProgress=threadprogress)

    def threadaction(id, reps, progress):
        for i in range(reps):
            time.sleep(1)
            if progress: progress(i)
        if id % 2 == 1: raise Exception

    def threadexit(myname):
        text.insert('end', '%s\texit\n' % myname)
        text.see('end')

    def threadfail(exc_info, myname):
        text.insert('end', '%s\tfail\t%s\n' % (myname, exc_info[0]))
        text.see('end')

    def threadprogress(count, myname):
        text.insert('end', '%s\tprog\t%s\n' % (myname, count))
        text.see('end')
        text.update()

    text=ScrolledText()
    text.pack()
    threadChecker(text)
    text.bind('<Button-1>', lambda event: list(map(onEvent, range(6))))
    text.mainloop()
コード例 #10
0
        time.sleep(0.1)
        print('put')
        dataQueue.put('[producer id=%d, count=%d]' % (id, i))


def consumer(root):
    try:
        print('get')
        data = dataQueue.get(block=False)
    except queue.Empty:
        pass
    else:
        root.insert('end', 'consumer got => %s\n' % str(data))
        root.see('end')
    root.after(250, lambda: consumer(root))  # 4 раза в секунду


def makethreads():
    for i in range(4):
        _thread.start_new_thread(producer, (i, ))


if __name__ == '__main__':
    # главный поток: порождает группу рабочих потоков на каждый щелчок мыши
    from tkinter.scrolledtext import ScrolledText
    root = ScrolledText()
    root.pack()
    root.bind('<Button-1>', lambda event: makethreads())
    consumer(root)  # запустить цикл проверки очереди в главном потоке окна
    root.mainloop()  # вход в цикл событий
コード例 #11
0
def producer(id):
    for i in range(5):
        time.sleep(0.1)
        print('put')
        dataQueue.put('[producer id=%d, count=%d]' % (id, i))

def consumer(root):
    try:
        print('get')
        data = dataQueue.get(block=False)
    except queue.Empty:
        pass
    else:
        root.insert('end', 'consumer got => %s\n' % str(data))
        root.see('end')
    root.after(250, lambda: consumer(root))    # 4 times per sec

def makethreads():
    for i in range(4):
        _thread.start_new_thread(producer, (i,))

if __name__ == '__main__':
    # main GUI thread: spawn batch of worker threads on each mouse click
    from tkinter.scrolledtext import ScrolledText
    root = ScrolledText()
    root.pack()
    root.bind('<Button-1>', lambda event: makethreads())
    consumer(root)                       # start queue check loop in main thread
    root.mainloop()                      # pop-up window, enter tk event loop
コード例 #12
0
ファイル: threadtools.py プロジェクト: chukotka12/PP4E-GitHub
            if progress: progress(i)  # обработчик progressЖ: в очередь
        if id % 2 == 1: raise Exception  # ошибочный номер: неудача

    # обработчики завершения/информирования о ходе выполнения задания:
    # передаются главному потоку через очередь
    def threadexit(myname):
        text.insert('end', '%s\texit\tn' % myname)
        text.see('end')

    def threadfail(exc_info, myname):
        text.insert('end', '%s\tfail\t%s\n' % (myname, exc_info[0]))
        text.see('end')

    def threadprogress(count, myname):
        text.insert('end', '%s\tprog\t%s\n' % (myname, count))
        text.see('end')
        text.update()  # допустимо: выполняется в гл.потоке

    # создать графический интерфейс и запустить цикл обработки событий от
    # таймера в главном потоке
    # порождать группу рабочих потоков в ответ на каждый щелчок мышью:
    # выполнение их может перекрываться во времени

    text = ScrolledText()
    text.pack()
    threadChecker(text)  # запуск цикла обработки потоков
    text.bind(
        '<Button-1>',  # в 3.X list необходим для получения всех результатов
        lambda event: list(map(onEvent, range(6))))  # map, для range - нет
    text.mainloop()  # вход в цикл сообщений
コード例 #13
-1
ファイル: threadtools.py プロジェクト: Austin-Xie/python-cave
    # thread's main action
    def threadaction(id, reps, progress): # what the thread does
        for i in range(reps):
            time.sleep(1)
        if progress: progress(i) # progress callback: queued
        if id % 2 == 1: raise Exception # odd numbered: fail

    # thread exit/progress callbacks: dispatched off queue in main thread
    def threadexit(myname):
        text.insert('end', '%s\texit\n' % myname)
        text.see('end')

    def threadfail(exc_info, myname):
        text.insert('end', '%s\tfail\t%s\n' % (myname, exc_info[0]))
        text.see('end')
    
    def threadprogress(count, myname):
        text.insert('end', '%s\tprog\t%s\n' % (myname, count))
        text.see('end')
        text.update() # works here: run in main thread

    # make enclosing GUI and start timer loop in main thread
    # spawn batch of worker threads on each mouse click: may overlap
    text = ScrolledText()
    text.pack()
    threadChecker(text) # start thread loop in main thread
    text.bind('<Button-1>', # 3.x need list for map, range ok
    lambda event: list(map(onEvent, range(6))) )
    text.mainloop() # pop-up window, enter tk event loop