-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathstart_gui.py
103 lines (76 loc) · 3.39 KB
/
start_gui.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
#!venv python
# -*- coding: utf-8 -*-
from PyQt5.QtWidgets import *
from yedek_siniflar.main_gui import Ui_MainWindow
from yedek_siniflar.islem_detay_gui import Ui_Form
import subprocess
from time import sleep
from yedek_siniflar.son_eklenen_log_getir import Son_Eklenen_Sinif
#Detay sınıfımız eğer splash olarak açmak istersek;
class DetaySinif(QWidget):
def __init__(self):
super().__init__()
self.ui = Ui_Form() #islem_detay_gui deki sınıfımızı oluşturdul.
self.ui.setupUi(self) #nesnenin setup fonksiyonunu çalıştırdık.
def guncelle_label(self, yazi): #ortadaki label'ı güncellemek istersek eğer guncelle_label(text) gönderimi yapabilirsiniz.
self.ui.label.setText(yazi)
class BaslaticiSinif(QMainWindow):
def __init__(self):
super().__init__()
self.ui = Ui_MainWindow()
self.ui.setupUi(self)
#self.sayi = 0 QT testi sırasında kullanıldı şuan boş.
def run_command(self, command): #komut çalıştırdığımız fonksiyom
p = subprocess.Popen(command,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
shell=True) #subprocess sınıfını kullandık ve out error olarak subprocess pipe ı oluşturdul.
# Buffer boş olana kadar subprocess ten stdout aldık.
for line in iter(p.stdout.readline, b''):
if line: # Boş satıları zıplayalım :)
yield line
while p.poll() is None:
sleep(.1) # CPU-cycle larına yakalanmayalım...
# Boş STDERR buffer
err = p.stderr.read()
if p.returncode != 0:
# run_command() fonksiyonu STDERR yakalarsa eğer;
print("Hata: " + str(err.decode("utf-8").split("\n")[0]))
def calistir(self):
print(self.ui.secilenVeri.currentText()) #buton çalışma testi seçili olan veriyi sadece print et
def teksefer(self):
self.ui.sure.setEnabled(False) #tek sefer seçili olursa süreyi devre dışı bırak
islem = Son_Eklenen_Sinif()
files = islem.duzenleme_getir()
islem.baslat(files)
def surekli(self):
self.ui.sure.setEnabled(True) #sürekli seçeneği seçilirse sure text alanını aktif ettik.
def log_goster(self):
goster = Son_Eklenen_Sinif()
files = goster.duzenleme_getir()
goster.baslat(files)
def tamamini_calistir(self):
print("tamamı başladı")
#QMessageBox.about(self, "Title", "Message")
#self.detay = DetaySinif()
#self.detay.show()
#self.sayi = self.sayi + 1
dosya = open("log.txt", "w") #tüm çıktıları log.txt ye kayıt edelim.
#for line in self.run_command("ping 8.8.8.8 -c 6"):
for line in self.run_command("sudo bash /usr/lib/stig4pardus/stig4pardus -s"):
try:
veri = line.decode("utf-8").split("\n")[0]
print(veri)
self.ui.cikti_label.setText(veri)
dosya.write(veri + "\n")
QApplication.processEvents()
except Exception as hata:
print(line)
self.ui.cikti_label.setText("İşlem tamamlandı... Logları kontrol ediniz...")
dosya.close()
QApplication.processEvents()
self.log_goster()
uygulama = QApplication([])
pencere = BaslaticiSinif()
pencere.show()
uygulama.exec_()