Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 2, 2014 15:59:17

sanodin
От:
Зарегистрирован: 2011-06-16
Сообщения: 515
Репутация: +  31  -
Профиль   Отправить e-mail  

Пинг subprocess

cmd = 'ping google.com'
import subprocess
PIPE = subprocess.PIPE
p = subprocess.Popen(cmd, shell=True, stdin=PIPE, stdout=PIPE,
        stderr=subprocess.STDOUT)
while True:
    s = p.stdout.readline()
    if not s: break
    print s.decode('cp866'),

Отредактировано sanodin (Янв. 2, 2014 16:58:25)

Офлайн

#2 Янв. 2, 2014 17:48:18

sanodin
От:
Зарегистрирован: 2011-06-16
Сообщения: 515
Репутация: +  31  -
Профиль   Отправить e-mail  

Пинг subprocess

missial
А вообще хочу написать утилиту, которая бы постоянно выводила средний пинг.Даже план есть небольшой:1. Отображать средний пинг .2. Научиться отображать всё это в GUI3. Сделать постоянyое отображение в трее windows
import sys, os
from PyQt4 import QtCore
from PyQt4.QtCore import SIGNAL
from PyQt4.QtGui import QApplication
from PyQt4.QtGui import QIcon
from PyQt4.QtGui import QMenu
from PyQt4.QtGui import QAction
from PyQt4.QtGui import QSystemTrayIcon
from PyQt4.QtCore import QString
from PyQt4.QtCore import SLOT
from PyQt4.QtCore import QTimer
import subprocess
if __name__ == "__main__":
    dummy_parent = QtCore.QObject()
    app = QApplication(sys.argv)
    plik = QString("/usr/share/icons/crystalsvg/16x16/apps/wine.png")
    menu = QMenu()
    quitAction = menu.addAction('Quit')
    sicon = QIcon(plik)
    tray = QSystemTrayIcon(sicon, parent=dummy_parent)
    tray.setContextMenu(menu)
    tray.show()
    quitAction.connect(quitAction, SIGNAL("triggered()"), app, SLOT("quit()"))
    tray.setToolTip("Ale czad!")
    def show_message():
        cmd = 'ping google.com -n 1000'
        
        PIPE = subprocess.PIPE
        p = subprocess.Popen(cmd, shell=True, stdin=PIPE, stdout=PIPE,
                stderr=subprocess.STDOUT)
        while True:
            s = p.stdout.readline()
            if not s: break
            
            tray.showMessage("google.com", s.decode('cp866'))
    QTimer.singleShot(2000, show_message)
    
    sys.exit(app.exec_())
    
для примера

Офлайн

#3 Янв. 2, 2014 18:00:27

4kpt_II
От: Харьков
Зарегистрирован: 2013-10-24
Сообщения: 999
Репутация: +  58  -
Профиль   Отправить e-mail  

Пинг subprocess

Я в Qt не работаю, но…

from PyQt4 import QtCore
from PyQt4.QtCore import SIGNAL
from PyQt4.QtGui import QApplication
from PyQt4.QtGui import QIcon
from PyQt4.QtGui import QMenu
from PyQt4.QtGui import QAction
from PyQt4.QtGui import QSystemTrayIcon
from PyQt4.QtCore import QString
from PyQt4.QtCore import SLOT
from PyQt4.QtCore import QTimer

Это нормально?

Офлайн

#4 Янв. 2, 2014 18:15:35

sanodin
От:
Зарегистрирован: 2011-06-16
Сообщения: 515
Репутация: +  31  -
Профиль   Отправить e-mail  

Пинг subprocess

так ?

import sys, os
from PyQt4 import QtCore
from PyQt4.QtGui import QAction,QSystemTrayIcon,QMenu,QIcon,QApplication
from PyQt4.QtCore import SLOT,QTimer,QString,SIGNAL
import subprocess
копипаст, не исправляется…)
вообще наверное пример неудачный…
текстовый виджет в трее хотел ТС а не всплывающее сообщение в трее

Отредактировано sanodin (Янв. 2, 2014 18:22:11)

Офлайн

#5 Янв. 2, 2014 19:48:23

Budulianin
От:
Зарегистрирован: 2011-10-18
Сообщения: 1218
Репутация: +  33  -
Профиль   Отправить e-mail  

Пинг subprocess

sanodin
так ?

Нет, не так.

Imports should usually be on separate lines, e.g.:
Yes: import os
     import sys
No:  import sys, os
It's okay to say this though:
from subprocess import Popen, PIPE

PEP 8



Отредактировано Budulianin (Янв. 2, 2014 19:49:22)

Офлайн

#6 Янв. 2, 2014 19:52:15

sanodin
От:
Зарегистрирован: 2011-06-16
Сообщения: 515
Репутация: +  31  -
Профиль   Отправить e-mail  

Пинг subprocess

sanodin
import sys, os
да, пропустил здесь, невнимательность граничащая с “побыстрей отделаться”

Офлайн

#7 Янв. 3, 2014 22:30:55

missial
Зарегистрирован: 2013-10-14
Сообщения: 27
Репутация: +  0  -
Профиль   Отправить e-mail  

Пинг subprocess

import subprocess
address = 'ya.ru'
while True:
    result=subprocess.Popen(["ping",'-n','1', str(address)],shell=True,stdout=subprocess.PIPE)
    ping = (result.stdout.read().decode('cp866'))
    m = ping.split()
    if len(m) != 48:
        print('0')
    else:
        print (m[46])
Написал я этот вывод. Реализован наверно очень страшно, но всё впереди)
Осталось еще всё вывести в GUI через tkinter, а потом попробую вывести в трее windows.
Подскажите, как мне все завернуть в функцию, чтоб при её вызове я получал значения
m[46]
?

Отредактировано missial (Янв. 3, 2014 22:31:37)

Офлайн

#8 Янв. 3, 2014 22:59:48

missial
Зарегистрирован: 2013-10-14
Сообщения: 27
Репутация: +  0  -
Профиль   Отправить e-mail  

Пинг subprocess

Разобрался)

from tkinter import *
import subprocess
root=Tk()
variable=StringVar()
def ping():
    address = 'ya.ru'
    while True:
        result=subprocess.Popen(["ping",'-n','1', str(address)],shell=True,stdout=subprocess.PIPE)
        ping = (result.stdout.read().decode('cp866'))
        m = ping.split()
        if len(m) != 48:
            b = '0'
        else:
            b = m[46]
        variable.set(str(b))
        root.update()
your_label=Label(root,textvariable=variable)
your_label.pack()
start_button=Button(root,text="start",command=ping)
start_button.pack()
root.mainloop()

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version