Использование фреймов рядов и команд

ispolzovanie frejmov ryadov i komand Сетевые сценарии

Для большей конкретности рассмотрим очень бегло несколько простых сценариев, добавляющих интерфейс на основе tkinter к клиентской стороне программы getfile. Все эти примеры предполагают, что серверная часть getfile уже запущена, — они просто добавляют графический интерфейс к клиентской стороне программы, облегчающий загрузку файла с сервера. Первый из них, представленный в примере 12.18, создает диалоговое окно для ввода данных о сервере, порте и имени файла, используя приемы конструирования форм, с которыми мы встречались в главах 8 и 9, а потом строит соответствующую команду getfile и выполняет ее с помощью функции os.system, рассматривавшейся во второй части книги.

Пример 12.18. PP4E\Internet\Sockets\getfilegui-1.py

запускает сценарий getfile в режиме клиента из простого графического интерфейса на основе tkinter;

точно так же можно было бы использовать os.fork+exec, os.spawnv (смотрите модуль Launcher);

в windows: замените pythonна start‘, если каталог

с интерпретатором не перечислен в переменной окружения PATH;

import sys, os

from tkinter import *

from tkinter.messagebox import showinfo

def onReturnKey():

cmdline = (‘python getfile.py -mode client -file %s -port %s -host %s’ %

(content[‘File’].get(),

content[‘Port’].get(),

content[‘Server’].get()))

os.system(cmdline)

showinfo(‘getfilegui-1’, ‘Download complete’)

box = Tk()

labels = [‘Server’, ‘Port’, ‘File’]

content = {}

for label in labels:

row = Frame(box)

row.pack(fill=X)

Label(row, text=label, width=6).pack(side=LEFT)

entry = Entry(row)

entry.pack(side=RIGHT, expand=YES, fill=X) content[label] = entry

box.title(‘getfilegui-1’)

box.bind(‘<Return>’, (lambda event: onReturnKey())) mainloop()

Если запустить этот сценарий, он создаст форму, изображенную на рис. 12.1. Нажатие клавиши Enter запускает экземпляр программы getfile в режиме клиента. Когда сгенерированная команда вызова getfile завершается, появляется окно подтверждения, изображенное на рис. 12.2.

7*i getfilegui-1

Server

localhost

Port

50001

File

testdir\ora-lp4.gif

 

Рис. 12.1. Сценарий getfilegui-1 в действии

Рис. 12.2. Окно подтверждения getfilegui-1

Использованная литература:

Марк Лутц — Программирование на Python, 4-е издание, II том, 2011

Каталог сайтов Всего.ру
Оцените статью
Секреты программирования
Добавить комментарий