Forum in READ ONLY mode! All questions and discussions on Discord official server, invite link: https://discord.gg/VxsGzJ7

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

globaluo
Neophyte
Neophyte
Posts: 40
Joined: 06.02.2013 9:58

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

Post by globaluo »

Как сделать на питоне возможность ввести данные в input для инициализации скрипта?
nah nah
Developer
Developer
Posts: 414
Joined: 13.07.2011 11:23
Contact:

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

Post by nah nah »

Можно сделать окошко с gui, в entry которого вводить данные, а можно подключить виндовскую консоль и перенастроить ввод из неё.
globaluo
Neophyte
Neophyte
Posts: 40
Joined: 06.02.2013 9:58

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

Post by globaluo »

nah nah wrote:Можно сделать окошко с gui, в entry которого вводить данные, а можно подключить виндовскую консоль и перенастроить ввод из неё.
а как окошко gui делается?
nah nah
Developer
Developer
Posts: 414
Joined: 13.07.2011 11:23
Contact:

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

Post 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
globaluo
Neophyte
Neophyte
Posts: 40
Joined: 06.02.2013 9:58

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

Post by globaluo »

оо спасибо! ща поколдую...
globaluo
Neophyte
Neophyte
Posts: 40
Joined: 06.02.2013 9:58

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

Post 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 вписать?
nah nah
Developer
Developer
Posts: 414
Joined: 13.07.2011 11:23
Contact:

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

Post by nah nah »

Да
globaluo
Neophyte
Neophyte
Posts: 40
Joined: 06.02.2013 9:58

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

Post by globaluo »

nah nah wrote:Да
А как работать с файлами в папке include? Как их подключать в скрипт? Их где-то прописать нужно для автозагрузки или вручную подключать?
80aX
Neophyte
Neophyte
Posts: 34
Joined: 10.12.2016 2:31
Location: Hawaii

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

Post by 80aX »

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

https://github.com/80aX/python_scripts/ ... ter/all.py
nah nah
Developer
Developer
Posts: 414
Joined: 13.07.2011 11:23
Contact:

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

Post 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:Я вынес их в один файл, подключаю в начале скрипта.
Но так и правда удобнее
globaluo
Neophyte
Neophyte
Posts: 40
Joined: 06.02.2013 9:58

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

Post by globaluo »

у меня почему-то не находит файл

Code: Select all

from stealthall import *

Code: Select all

ImportError: No module named 'stealthall'
80aX
Neophyte
Neophyte
Posts: 34
Joined: 10.12.2016 2:31
Location: Hawaii

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

Post by 80aX »

globaluo wrote:у меня почему-то не находит файл

Code: Select all

from stealthall import *

Code: Select all

ImportError: No module named 'stealthall'
а где лежит stealthall.py ? Должен в той же папке где и скрипт.
globaluo
Neophyte
Neophyte
Posts: 40
Joined: 06.02.2013 9:58

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

Post 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 они там для чего-то нужны?
80aX
Neophyte
Neophyte
Posts: 34
Joined: 10.12.2016 2:31
Location: Hawaii

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

Post by 80aX »

Ага, для чего то нужны :) это такие же скрипты, прост часто используемые, вот их и выносят в отдельные модули. Там косяк есть один , когда качал новый стелс заметил, в файле hungry.py записан скрипт для паскаля)
User avatar
Vizit0r
Developer
Developer
Posts: 3958
Joined: 24.03.2005 17:05
Contact:

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

Post by Vizit0r »

80aX wrote: когда качал новый стелс заметил, в файле hungry.py записан скрипт для паскаля)
непонятное дело - брал все с одного каталога, но у меня питоновский скрипт, а там в самом деле паскалевский.
Пересмотрю все инклюды.
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".
Post Reply