Каким будет пакетный эквивалент Windows для ввода типа HTML = «пароль»?

Как я понимаю, вы используете Ui_mainWindow, сгенерированный из файла .ui. Как вы видите Ui_mainWindow, это просто класс python, который содержит виджеты. getOpenFileName возвращает экземпляр QWidget в качестве первого параметра. Поэтому вам нужно подклассы QWidget или QMainWindow и определить методы в этом классе.

Код будет выглядеть так:

import sys

from PyQt4 import QtCore, QtGui

from file_with_ui import Ui_MainWindow

class Main(QtGui.QMainWindow, Ui_MainWindow):
    def __init__(self):
        QtGui.QMainWindow.__init__(self)
        self.setupUi(self)

    def browse(self):
        filename = QtGui.QFileDialog.getOpenFileName(self, 'Open File', '.')
        fname = open(filename)
        data = fname.read()
        self.textEdit.setText(data)
        fname.close()

if __name__ == "__main__":
    app = QtGui.QApplication(sys.argv)
    window = Main()
    window.show()
    sys.exit(app.exec_())

В качестве альтернативы вы можете сохранить ui как Атрибут экземпляра:

class Main(QtGui.QMainWindow):
    def __init__(self):
         QtGui.QMainWindow.__init__(self)
         self.ui=Ui_MainWindow()
         self.ui.setupUi(self)

И вводит ваши элементы управления через self.ui, например: self.ui.textEdit.setText(data)

. Рассмотрим учебное пособие по pyuic использованию PyQt по примеру (сеанс 1)

11
задан Nano Taboada 13 November 2008 в 13:12
поделиться

6 ответов

проверьте это

http://www.netikka.net/tsneti/info/tscmd052.htm

@echo off & setlocal enableextensions
    :: Build a Visual Basic Script
    set vbs_=%temp%\tmp$$$.vbs
    set skip=
    findstr "'%skip%VBS" "%~f0" > "%vbs_%"
    ::
    :: Prompting without linefeed as in Item #15
    echo.|set /p="Password: "

    :: Run the script with Microsoft Windows Script Host Version 5.6
    for /f "tokens=* delims=" %%a in ('cscript //nologo "%vbs_%"') do set MyPass1=%%a

    ::
    ::echo.
    echo.|set /p="Retype  : "

    for /f "tokens=* delims=" %%a in ('cscript //nologo "%vbs_%"') do set MyPass2=%%a
    ::

    :: Clean up
    for %%f in ("%vbs_%") do if exist %%f del %%f
    ::
    :: Demonstrate the result
    echo.
    if "%MyPass1%"=="%MyPass2%" (
      echo The entered password was %MyPass1%
      ) else (
      echo No match)
    endlocal & goto :EOF
    '
    'The Visual Basic Script
    Set WshPass = WScript.CreateObject("ScriptPW.Password") 'VBS
    Password=WshPass.GetPassWord() 'VBS
    WScript.Echo PassWord 'VBS
5
ответ дан 3 December 2019 в 08:31
поделиться

Если можно установить Cygwin, Вы получите оболочку удара по умолчанию, таким образом, эта команда будет работать:

считайте-s-p "Пароль": ПАРОЛЬ

Только проблемой является теперь значение ПАРОЛЯ, только установлен в оболочке удара, не как переменная среды пакетный файл видит (не используйте PWD в качестве этого, означает что-то еще в cygwin). Таким образом, необходимо было бы переписать сценарий как сценарий оболочки удара (возможно, не слишком трудно, учитывая ограничения командной строки!).

Или Вы могли передать пароль в сценарий пакетной обработки от cygwin, но это означает выполнять новый экземпляр командной строки:

cmd $PASSWORD /cyourbatchfile.bat

Все немного замысловатые и нисколько удовлетворяющий ;)

1
ответ дан 3 December 2019 в 08:31
поделиться

Разумным использованием другого инструмента, в свободном доступе в Windows, следующие два сценария делают задание, которое Вы хотите.

Во-первых, GetPwd.cmd:

@echo off
:: GetPwd.cmd - Get password with no echo.
<nul: set /p passwd=Password: 
for /f "delims=" %%i in ('cscript /nologo GetPwd.vbs') do set passwd=%%i
echo.
:: This bit's just to prove we have the password.
echo %passwd%

Затем GetPwd.vbs:

' GetPwd.vbs - Get password with no echo then echo it. '
Set oScriptPW = CreateObject("ScriptPW.Password")
strPassword = oScriptPW.GetPassword()
Wscript.StdOut.WriteLine strPassword

Объяснение:

GetPwd.vbs просто использует объект пароля ввести пароль от пользователя и затем распечатать его к стандартному выводу (следующий абзац объяснит, почему это не обнаруживается в терминале).

GetPwd.cmd немного более хитер (но командные сценарии обычно).

"<nul: set /p passwd=Password: " управляйте просто производит подсказку без запаздывания CR/LF - это - подлый способ эмулировать удар "echo -n". Это устанавливает passwd к пустой строке как побочный эффект и не ожидает входа, так как он берет свой вход от nul: устройство.

"for /f "delims=" %%i in ('cscript /nologo GetPwd.vbs') do set passwd=%%i" оператор является самым хитрым битом. Это выполняет vbscript без рекламы Microsoft (/nologo), так, чтобы единственный вывод строки был паролем (от vbscript "Wscript.StdOut.WriteLine strPassword".

Установка разделителей ни к чему требуется, чтобы получать входные строки с пробелами, иначе Вы просто получаете первое слово. "for ... do set ..." наборы passwd быть фактическим выводом пароля от vbscript.

Затем мы отзываемся эхом, пустая строка (на самом деле завершаются "Password: " строка), и повторяют пароль, таким образом, можно проверить, что это работает:

C:\Pax> GetPwd
Password:
this is my password

C:\Pax> 

scriptpw.dll доступен с XP и 2K3, но не обязательно более поздние версии.

Инструкции для Vista и по-видимому Win7 ниже, дают им попытку:

Для маскирования пароля сценарий использует в своих интересах COM-объект ScriptPW. ScriptPW загружается по умолчанию на Windows XP и Windows 2003. При выполнении Windows 2000 или Windows Vista необходимо будет скопировать scriptpw.dll файл от Windows\System32 папка системы XP или системы Windows 2003 к Winnt\System32 или Windows\System32 папка на Ваших Windows 2000 или системе Vista. После того как DLL был скопирован, необходимо будет зарегистрировать его путем выполнения команды:

regsvr32 scriptpw.dll

Для успешной регистрации DLL на машине Vista необходимо будет открыть командную строку как администратор. Чтобы сделать это, нажмите Start | Все Программы | Аксессуары. Затем щелкните правой кнопкой по ярлыку Командной строки и выбору, “Выполненному как администратор”. Однажды в командной строке как администратор, Вы сможете успешно работать regsvr32 scriptpw.dll управляйте для регистрации DLL.

4
ответ дан 3 December 2019 в 08:31
поделиться

Я предполагаю, что Вы не хотите эха пароля на экране.

Если всплывающее окно хорошо для Вас, Вы могли бы использовать, например, VBScript для показа окна IE, отображающего поле пароля. Вот пример.

Как альтернатива Вы могли назвать свой сценарий от HTA (Приложение HTML) файлом (см. Введение в Приложения HTML (HTAs).

С уважением, divo

1
ответ дан 3 December 2019 в 08:31
поделиться

Мы действительно наполняем как это все время, но помещаем пароль в командную строку и передаем его переменной в пакетном файле.

1
ответ дан 3 December 2019 в 08:31
поделиться

Другой альтернативой являются мои инструменты командной строки EditV32 (x86) или EditV64 (x64). Например:

editv32 -m -p "Password: " PWD

-m означает «маскированный ввод», а -p - это приглашение. Ввод пользователя сохраняется в переменной среды PWD. Вы можете получить его здесь:

http://www.westmesatech.com/editv.html

0
ответ дан 3 December 2019 в 08:31
поделиться