Page 1 of 2

интерактивный скрипт

Posted: 26.02.2017 14:12
by globaluo
Как сделать на питоне возможность ввести данные в input для инициализации скрипта?

Re: интерактивный скрипт

Posted: 26.02.2017 19:53
by nah nah
Можно сделать окошко с gui, в entry которого вводить данные, а можно подключить виндовскую консоль и перенастроить ввод из неё.

Re: интерактивный скрипт

Posted: 02.03.2017 11:51
by globaluo
nah nah wrote:Можно сделать окошко с gui, в entry которого вводить данные, а можно подключить виндовскую консоль и перенастроить ввод из неё.
а как окошко gui делается?

Re: интерактивный скрипт

Posted: 02.03.2017 12:07
by nah nah
для винды это ткинтер.

Code: Select all

import tkinter as tk
import tkinter.ttk as ttk


class Application:
    def __init__(self):
        self.root = tk.Tk()  # инициализируемся
        self.root.title('my gui')
        entry = ttk.Entry(self.root)  # создаём виджет
        entry.pack()  # пакуем его
        entry.bind('<Return>', self.get_entry)  # биндим функцию на enter
    
    def get_entry(self, event):
        self.input = event.widget.get()  # вытащим то, что было введено в энтри и запишем в своё поле input
        self.root.destroy()  # убиваем гуи
В своём скрипте, когда нужно произвести ввод

Code: Select all

def get_gui_input():
    app = Application()
    app.root.mainloop()
    return app.input

Re: интерактивный скрипт

Posted: 02.03.2017 12:21
by globaluo
оо спасибо! ща поколдую...

Re: интерактивный скрипт

Posted: 02.03.2017 12:50
by globaluo
nah nah wrote:для винды это ткинтер.

Code: Select all

import tkinter as tk
import tkinter.ttk as ttk


class Application:
    def __init__(self):
        self.root = tk.Tk()  # инициализируемся
        self.root.title('my gui')
        entry = ttk.Entry(self.root)  # создаём виджет
        entry.pack()  # пакуем его
        entry.bind('<Return>', self.get_entry)  # биндим функцию на enter
    
    def get_entry(self, event):
        self.input = event.widget.get()  # вытащим то, что было введено в энтри и запишем в своё поле input
        self.root.destroy()  # убиваем гуи
В своём скрипте, когда нужно произвести ввод

Code: Select all

def get_gui_input():
    app = Application()
    app.root.mainloop()
    return app.input
а класс Application с его импортом, можно в папку include вписать?

Re: интерактивный скрипт

Posted: 02.03.2017 12:53
by nah nah
Да

Re: интерактивный скрипт

Posted: 02.03.2017 13:05
by globaluo
nah nah wrote:Да
А как работать с файлами в папке include? Как их подключать в скрипт? Их где-то прописать нужно для автозагрузки или вручную подключать?

Re: интерактивный скрипт

Posted: 02.03.2017 13:56
by 80aX
globaluo wrote:
nah nah wrote:Да
А как работать с файлами в папке include? Как их подключать в скрипт? Их где-то прописать нужно для автозагрузки или вручную подключать?
Я вынес их в один файл, подключаю в начале скрипта.

https://github.com/80aX/python_scripts/ ... ter/all.py

Re: интерактивный скрипт

Posted: 02.03.2017 13:57
by nah nah
про механизм импорта в питоне рассказывать долго) В интернете полно русскоязычной документации. Самое простое это:
в папке include создать файл __init__.py. Такой файл сделает папку пакетом. Допустим в папке лежит файл gui.py с классом Application

В скрипте:

Code: Select all

from include import gui
app = gui.Application()
или

Code: Select all

from include.gui import Application
app = Application()
Можно в __init__.py вписать такое

Code: Select all

from .gui import Application

__all__ = [Application]
тогда в скрипте будет так

Code: Select all

from include import *
app = Application()
PS: Вы пытаетесь выстрелить себе в ногу, но то и дело попадаете промеж пальцев. А всё потому, что Питон настолько гибкий — что из рук выскальзывает. (Как прострелить себе ногу на разных языках)
80aX wrote:Я вынес их в один файл, подключаю в начале скрипта.
Но так и правда удобнее

Re: интерактивный скрипт

Posted: 02.03.2017 16:38
by globaluo
у меня почему-то не находит файл

Code: Select all

from stealthall import *

Code: Select all

ImportError: No module named 'stealthall'

Re: интерактивный скрипт

Posted: 02.03.2017 16:58
by 80aX
globaluo wrote:у меня почему-то не находит файл

Code: Select all

from stealthall import *

Code: Select all

ImportError: No module named 'stealthall'
а где лежит stealthall.py ? Должен в той же папке где и скрипт.

Re: интерактивный скрипт

Posted: 02.03.2017 17:32
by globaluo
80aX wrote:
globaluo wrote:у меня почему-то не находит файл

Code: Select all

from stealthall import *

Code: Select all

ImportError: No module named 'stealthall'
а где лежит stealthall.py ? Должен в той же папке где и скрипт.
Переложил, заработало! Спасибо! Но просто любопытно, в папке includes есть несколько файлов .inc и .py они там для чего-то нужны?

Re: интерактивный скрипт

Posted: 02.03.2017 18:38
by 80aX
Ага, для чего то нужны :) это такие же скрипты, прост часто используемые, вот их и выносят в отдельные модули. Там косяк есть один , когда качал новый стелс заметил, в файле hungry.py записан скрипт для паскаля)

Re: интерактивный скрипт

Posted: 04.03.2017 21:24
by Vizit0r
80aX wrote: когда качал новый стелс заметил, в файле hungry.py записан скрипт для паскаля)
непонятное дело - брал все с одного каталога, но у меня питоновский скрипт, а там в самом деле паскалевский.
Пересмотрю все инклюды.