正しいパスワード(Tkinter GUI)の入力に応じてコマンドを実行するにはどうすればよいですか?

アシュウィン・ジョシー

私は小さなGUIを作成しましたTkinter/python

import Tkinter
import tkMessageBox
import os
top = Tkinter.Tk()
top.geometry("400x250")

def root_login():
    os.system("gksudo su && sudo su")   
    tkMessageBox.showinfo("Login successful!")

def close_window():
    top.destroy()


B = Tkinter.Button(top, text ="Login", command = root_login)
B.pack()

Q = Tkinter.Button(top, text ="Quit", command = close_window)
Q.pack()

top.mainloop()

に間違ったパスワードが指定されているgksudo su dialog場合でも、ダイアログには「ログインに成功しました!」と表示されます。

「ログインに成功しました!」ではなく、パスワードの入力が間違っていたことを示すにはどうすればよいですか。このウィンドウを、作成しているアプリケーションのログイン画面として作成したいと思います。

Jacob Vlijm

話題から外れているが、そのためにgksudo

GUIはターミナルで何が起こるかに影響を与えないので、何を達成したいかわからない:)

その後、技術的に

問題は、実行する条件を設定していないtkMessageBox.showinfo("Login successful!")ため、で何が起こってos.system("gksudo su && sudo su")も次の行が実行されることです。

def root_login():
    os.system("gksudo su && sudo su")   
    tkMessageBox.showinfo("Login successful!")

それを機能させる方法

まず、os.systemこれ以上使用しないでください。本当に、本当に古風です。

以下を使用した代替コーディングについては、以下を参照してくださいsubprocess.check_call

#!/usr/bin/env python
import subprocess
import Tkinter
import tkMessageBox

top = Tkinter.Tk()
top.geometry("400x250")

def root_login():
    try:
        subprocess.check_call(["gksudo", "su"])
    except subprocess.CalledProcessError:
        tkMessageBox.showinfo("message", "OOOOPS...\nWrong password!")
    else:
        tkMessageBox.showinfo("message", "Login successful!")

def close_window():
    top.destroy()

B = Tkinter.Button(top, text ="Login", command = root_login)
B.pack()
Q = Tkinter.Button(top, text ="Quit", command = close_window)
Q.pack()

top.mainloop()

ただしgksudo su、GUIを実行しているため、効果はありません:)

説明

subprocess.check_call(["gksudo", "su"])

...subprocess.CalledProcessErrorパスワードが正しくない場合にを発生させ、次のメッセージを表示します。

ここに画像の説明を入力してください

パスワードが正しい場合、メッセージは次のとおりです。

ここに画像の説明を入力してください

現れる。

注意

try/except/else建設、私は明快さの理由のためにしました。以下の関数は、次の行から「ジャンプ」するため、まったく同じように機能します。

subprocess.check_call(["gksudo", "su"])

tkMessageBox.showinfo("message", "OOOOPS...\nWrong password!")

場合に応じて、そしてすぐに、最初のものはsubprocess.CalledProcessError:を上げます

def root_login():
    try:
        subprocess.check_call(["gksudo", "su"])
        tkMessageBox.showinfo("message", "Login successful!")
    except subprocess.CalledProcessError:
        tkMessageBox.showinfo("message", "OOOOPS...\nWrong password!")

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

入力したコマンドを実行するにはどうすればよいですか

分類Dev

現在のコマンドが完了したときに実行するコマンドを入力するにはどうすればよいですか?

分類Dev

Bashスクリプトのパスワードを使用してsftpコマンドを実行するにはどうすればよいですか?

分類Dev

sudoを使用してパスワードの入力を求めずに実行を許可するにはどうすればよいですか?

分類Dev

sudoを使用してパスワードの入力を求めずに実行を許可するにはどうすればよいですか?

分類Dev

シェルコマンドを実行してdocker-composebuild argにデータを入力するにはどうすればよいですか?

分類Dev

ユーザーから入力を取得し、tkinterでPythonコード(sql)として入力を実行するにはどうすればよいですか?

分類Dev

Unix:最後のコマンド-ファイル入力用のサブコマンドを実行するにはどうすればよいですか?

分類Dev

同じ引数で別のコマンドを実行するにはどうすればよいですか?

分類Dev

Vimのコマンドラインにテキストを実行せずに入力するにはどうすればよいですか?

分類Dev

`sudo`コマンドを実行するときにパスワードを入力するときにパスワードにアスタリスクを表示させるにはどうすればよいですか?

分類Dev

`sudo`コマンドを実行するときにパスワードを入力するときにパスワードにアスタリスクを表示させるにはどうすればよいですか?

分類Dev

パスワードなしで特定のsudoコマンドを実行するにはどうすればよいですか?

分類Dev

1行のコマンドを使用してAIXのユーザーのパスワードを設定するにはどうすればよいですか?

分類Dev

このコマンドに端末の標準入力からパスワードを読み取らせるにはどうすればよいですか?

分類Dev

SSH経由でリモートシェルスクリプトを実行し、そのスクリプトでそれを必要とするコマンドによってパスワードの入力を求められるにはどうすればよいですか?

分類Dev

1つのパスワード入力で実行される繰り返しrsyncを作成するにはどうすればよいですか?

分類Dev

関数の文字列出力を入力または実行可能なシェルコマンドに変換するにはどうすればよいですか?

分類Dev

cmdで実行中のコマンドに入力を送信するにはどうすればよいですか?

分類Dev

1 ffmpeg処理の出力を同じコマンドの入力としてリダイレクトするにはどうすればよいですか?

分類Dev

パスワードを入力する前に「sudo」コマンドを元に戻すにはどうすればよいですか?

分類Dev

パスワードを入力したり、コンピューターのロックを解除したりするたびにウィンドウタスクを実行するにはどうすればよいですか?

分類Dev

Pythonコードからpylintコマンドを実行するにはどうすればよいですか。また、pylintのどの引数が私の必要に応じてログメッセージを作成できますか

分類Dev

コマンドへの変数の入力ボックスを使用してコマンドラインを実行するスクリプトを作成するにはどうすればよいですか?

分類Dev

VIMで、長いコマンドを実行した後、ヒット入力プロンプトを回避するにはどうすればよいですか?

分類Dev

複数の入力を受け取り、各入力に対して同じ関数を実行し、すべてを一度に出力するコードをDRYするにはどうすればよいですか?

分類Dev

rootとして実行されているシェルスクリプトからユーザーアカウントを入力してコマンドを実行するにはどうすればよいですか?

分類Dev

コマンドのstdoutをExpect入力に送信するにはどうすればよいですか?

分類Dev

関数のreturnコマンドに変数を入力するにはどうすればよいですか?

Related 関連記事

  1. 1

    入力したコマンドを実行するにはどうすればよいですか

  2. 2

    現在のコマンドが完了したときに実行するコマンドを入力するにはどうすればよいですか?

  3. 3

    Bashスクリプトのパスワードを使用してsftpコマンドを実行するにはどうすればよいですか?

  4. 4

    sudoを使用してパスワードの入力を求めずに実行を許可するにはどうすればよいですか?

  5. 5

    sudoを使用してパスワードの入力を求めずに実行を許可するにはどうすればよいですか?

  6. 6

    シェルコマンドを実行してdocker-composebuild argにデータを入力するにはどうすればよいですか?

  7. 7

    ユーザーから入力を取得し、tkinterでPythonコード(sql)として入力を実行するにはどうすればよいですか?

  8. 8

    Unix:最後のコマンド-ファイル入力用のサブコマンドを実行するにはどうすればよいですか?

  9. 9

    同じ引数で別のコマンドを実行するにはどうすればよいですか?

  10. 10

    Vimのコマンドラインにテキストを実行せずに入力するにはどうすればよいですか?

  11. 11

    `sudo`コマンドを実行するときにパスワードを入力するときにパスワードにアスタリスクを表示させるにはどうすればよいですか?

  12. 12

    `sudo`コマンドを実行するときにパスワードを入力するときにパスワードにアスタリスクを表示させるにはどうすればよいですか?

  13. 13

    パスワードなしで特定のsudoコマンドを実行するにはどうすればよいですか?

  14. 14

    1行のコマンドを使用してAIXのユーザーのパスワードを設定するにはどうすればよいですか?

  15. 15

    このコマンドに端末の標準入力からパスワードを読み取らせるにはどうすればよいですか?

  16. 16

    SSH経由でリモートシェルスクリプトを実行し、そのスクリプトでそれを必要とするコマンドによってパスワードの入力を求められるにはどうすればよいですか?

  17. 17

    1つのパスワード入力で実行される繰り返しrsyncを作成するにはどうすればよいですか?

  18. 18

    関数の文字列出力を入力または実行可能なシェルコマンドに変換するにはどうすればよいですか?

  19. 19

    cmdで実行中のコマンドに入力を送信するにはどうすればよいですか?

  20. 20

    1 ffmpeg処理の出力を同じコマンドの入力としてリダイレクトするにはどうすればよいですか?

  21. 21

    パスワードを入力する前に「sudo」コマンドを元に戻すにはどうすればよいですか?

  22. 22

    パスワードを入力したり、コンピューターのロックを解除したりするたびにウィンドウタスクを実行するにはどうすればよいですか?

  23. 23

    Pythonコードからpylintコマンドを実行するにはどうすればよいですか。また、pylintのどの引数が私の必要に応じてログメッセージを作成できますか

  24. 24

    コマンドへの変数の入力ボックスを使用してコマンドラインを実行するスクリプトを作成するにはどうすればよいですか?

  25. 25

    VIMで、長いコマンドを実行した後、ヒット入力プロンプトを回避するにはどうすればよいですか?

  26. 26

    複数の入力を受け取り、各入力に対して同じ関数を実行し、すべてを一度に出力するコードをDRYするにはどうすればよいですか?

  27. 27

    rootとして実行されているシェルスクリプトからユーザーアカウントを入力してコマンドを実行するにはどうすればよいですか?

  28. 28

    コマンドのstdoutをExpect入力に送信するにはどうすればよいですか?

  29. 29

    関数のreturnコマンドに変数を入力するにはどうすればよいですか?

ホットタグ

アーカイブ