2017-07-05 17 views
0

私はtkinter上にGUIを使ってpingツールを作ろうとしています。事は、私はあなたがWebドメインを入力して、そのWebにpingとpingをクリックすることができるボックスを作成したいと思います。今、コード(V1.0)でpingするようにWebを変更する必要がありますが、私は実際に上記の変更を加えようとしましたが、うまくいかないようです。バージョンボックスを作り、変数tkinterに入力を保存する

#Imports 
from subprocess import Popen, PIPE, STDOUT 
import Tkinter as tk 
from Tkinter import Tk 
from threading import Thread 


def create_worker(target): 
    return Thread(target=target) 

def start_worker(worker): 
    worker.start() 

#Ping printed on tkinter window root 
def commande(): 
    cmd = 'ping -c 10 google.com' 
    p = Popen(cmd.split(), stdout=PIPE, stderr=STDOUT) 
    for line in iter(p.stdout.readline, ''): 
    result.configure(text=line) 

#tkinter code 
root = Tk() 
root.title('PingTool') 
root.geometry('450x70+400+400') 

worker = create_worker(commande) 
tk.Button(root, text='Ping', command=lambda:start_worker(worker)).pack() 

result = tk.Label(root) 
result.pack() 

root.mainloop() 

一つに動作していない:これは元のコードされ

from subprocess import Popen, PIPE, STDOUT 
import Tkinter as tk 
from Tkinter import Tk 
from threading import Thread 

#intput on the console 
u = input('Website to ping: ') 

def create_worker(target): 
    return Thread(target=target) 

def start_worker(worker): 
    worker.start() 


def commande(): 
    cmd = 'ping -c 10 ' + u 
    p = Popen(cmd.split(), stdout=PIPE, stderr=STDOUT)# 
    for line in iter(p.stdout.readline, ''): #changes the text printed instead of printing multiple times 
     result.configure(text=line)# 

root = Tk() 
root.title('PingTool') 
root.geometry('450x70+400+400') 

worker = create_worker(commande) 
tk.Button(root, text='Ping', command=lambda: start_worker(worker)).pack() 

result = tk.Label(root) 
result.pack() 

root.mainloop() 

「働いていないバージョンでは、」入力がコンソール上に書かれている「問題」を持っています。アイデアは、ラベルを作成し、テキストをそこに入力することです。 これは、このようなことを尋ねるのに最適な場所ではないかもしれないと知っています。私は仕事をしたいと思っていますが、本当に試してみてください。 ありがとう

PD:私はtkinterから始まります。

+0

['Entry'](http://effbot.org/tkinterbook/entry.htm)ウィジェットをご覧ください。 –

答えて

0

subprocess.check_outputは、実行したいことに十分でなければなりませんhttps://pymotw.com/2/subprocess/index.html#module-subprocessボタンを押したときにコマンドを実行し、出力を出力する簡単なプログラムが続きます。ラベルhttp://effbot.org/tkinterbook/label.htmにテキストを設定し、有効なウェブサイトではないエントリのコードを追加する必要があります。

import sys 
if sys.version_info[0] < 3: 
    import Tkinter as tk  ## Python 2.x 
else: 
    import tkinter as tk  ## Python 3.x 

import subprocess 

def button_callback(): 
    ent_contents=ent.get() 
    output=subprocess.check_output("ping -c 10 "+ent_contents, 
            shell=True) 
    print "*****after", output, "\n" 

root=tk.Tk() 
ent=tk.Entry(root) 
ent.grid(row=0, column=0) 
ent.focus_set() 

tk.Button(root, text="ping website", bg="lightblue", 
      command=button_callback).grid(row=1, column=0) 
tk.Button(root, text="Exit Program", bg="orange", 
      command=root.quit).grid(row=2, column=0) 

root.mainloop() 
関連する問題