2017-02-24 4 views
0

gui의 텍스트 상자와 같은 콘솔을 만들고 동일한 md5 해시를 사용하는 폴더에 그림이 있는지 말해달라고했습니다.gui 콘솔이있는 Python pyqt 파일 해더

저는 이것이 왜 저에게 효과가 없는지 혼란 스럽습니다. 나는 이렇게 많은 다른 방법을 시도했고 아무것도 나를 위해 일하고있다.

내 코드는 다음과 같습니다. 재미있을 때 오류는 없지만 작동하지 않습니다.

import webbrowser, hashlib, os, sys, time, random, win32api, re , time, subprocess 
from PyQt4.QtCore import QSize, QTimer, QRect, pyqtSlot 
from PyQt4.QtGui import QApplication,QLineEdit ,QGraphicsRectItem , QMainWindow, QPushButton, QWidget, QIcon, QLabel, QPainter, QPixmap, QMessageBox, QAction, QKeySequence, QFont, QFontMetrics, QMovie 
from PyQt4 import QtGui 

class UIWindow(QWidget): 
    def __init__(self, QWidget, parent=None): 
     super(UIWindow, self).__init__(parent) 
     self.resize(QSize(400, 450)) 

     self.textbox = QLineEdit('dance',QWidget) 
     self.textbox.move(20, 300) 
     self.textbox.resize(280,300) 

     self.btn = QPushButton('files',self) 
     self.btn .resize(100, 40) 
     self.btn .move(260, 400) 

     def sesh(): 
      for root, dirs,files in os.walk("C:\Users\Matt\Desktop\photos", topdown=True): 
       for name in files: 
        #print(os.path.join(root, name)) 
        FileName = (os.path.join(root, name)) 
        hasher = hashlib.md5() 
        with open(str(FileName), 'rb') as afile: 
         buf = afile.read() 
         hasher.update(buf) 
        if (hasher.hexdigest()) == '653cd1d521d8f343c998e0d568a1e5ea': 
         self.textbox.setText('file is here') 
        if (hasher.hexdigest()) == 'd41d8cd98f00b204e9800998ecf8427e': 
         self.textbox.setText('file is here') 
        if (hasher.hexdigest()) == '03c7c0ace395d80182db07ae2c30f034': 
         self.textbox.setText('file is here') 
        if (hasher.hexdigest()) == '6c0cbf5029aed0af395ac4b864c6b095': 
         self.textbox.setText('file is here') 
        else: 
         self.textbox.setText ("file is NOT here") 
     def click(): 
      self.textbox.setText('Button clicked.' +str(sesh())) 

     self.btn .clicked.connect(click) 

class MainWindow(QMainWindow,): 
    def __init__(self, parent=None): 
     super(MainWindow, self).__init__(parent) 
     self.setGeometry(50, 50, 1000, 1000) 
     self.setFixedSize(950, 620) 
     self.startUIWindow() 
     self.setWindowIcon(QtGui.QIcon('Images\Logo.png')) 

    def startUIWindow(self): 
     self.Window = UIWindow(self) 
     self.setWindowTitle("pythonw") 
     self.setCentralWidget(self.Window) 
     self.show() 

if __name__ == '__main__': 
    app = QApplication(sys.argv) 
    w = MainWindow() 
    sys.exit(app.exec_()) 

누군가가 놀라운 것 나를 위해이 일을 할 수 있고 난 그냥 완전히이 시점에서 분실하고 너무 감사 할 것입니다 경우.

답변

1

함수 sesh()에서 아무 것도 반환하지 않습니다.

sesh()로 텍스트를 설정 한 다음 click()에서 바로 덮어 씁니다.

변경이 라인 :

self.textbox.setText('file is here') 

에 :

return 'file is here' 
(또는 '하지 여기에 적절한)

당신이 답을해야합니다.

참고 : 바로 웹 페이지 형식이 될 수도 있지만 BTN 뒤에 공백을 갖고있는 것 같다 :

self.btn .clicked.connect(click) 

편집 :

는, 출력이 더 설명하게이 부분을 변경하려면 :

if (hasher.hexdigest()) == '653cd1d521d8f343c998e0d568a1e5ea': 
    self.textbox.setText('file is here') 
if (hasher.hexdigest()) == 'd41d8cd98f00b204e9800998ecf8427e': 
    self.textbox.setText('file is here') 
if (hasher.hexdigest()) == '03c7c0ace395d80182db07ae2c30f034': 
    self.textbox.setText('file is here') 
if (hasher.hexdigest()) == '6c0cbf5029aed0af395ac4b864c6b095': 
    self.textbox.setText('file is here') 
else: 
    self.textbox.setText ("file is NOT here") 

이상을 :

output = '' 
multi_files = False 
if (hasher.hexdigest()) == '653cd1d521d8f343c998e0d568a1e5ea': 
    output += 'file1' 
    multi_files = True 
if (hasher.hexdigest()) == 'd41d8cd98f00b204e9800998ecf8427e': 
    if multi_files == True: 
     output += ', file2' 
    else: 
     output += 'file2' 
     multi_files = True 
if (hasher.hexdigest()) == '03c7c0ace395d80182db07ae2c30f034': 
    if multi_files == True: 
     output += ', file3' 
    else: 
     output += 'file3' 
     multi_files = True 
if (hasher.hexdigest()) == '6c0cbf5029aed0af395ac4b864c6b095': 
    if multi_files == True: 
     output += ', file4' 
    else: 
     output += 'file4' 
     multi_files = True 
output += ' found' 
if multi_files == False: 
    output("no files here") 
return output 
,451,515,

이 라인 변경 :

self.textbox.setText('Button clicked.' +str(sesh())) 

에 :

self.textbox.setText(str(sesh())) 

추가 의견 : 당신이 정말로 멀티 라인을 원한다면, 당신은 QLineEdit를 사용할 수 있습니다. 당신이 텍스트 만 출력한다면 (당신이있는 것처럼 보입니다), 다중 라인이 될 수있는 QLabel을 사용하십시오. 줄 바꿈이 필요한 문자열에 '\ n'을 추가합니다.

+0

이것은 내 문제를 해결하지 못했습니다. 그래도 여전히 도움을 얻지 못했습니다. – Tyrell

+0

오, 내가 한 가지를 수정했는데, 지금은 작동했습니다. QLineEdit에서 한 줄 이상을 인쇄하는 방법을 알고있는 방법이 있습니다. 해시 중 하나가 내 폴더에 있고 그 중 하나가 그 파일 중 하나가 거기에 있지만 파일 중 하나가 폴더에 없다는 것을 알려주지 않고 있다는 것을 알려주는 것입니다 – Tyrell

+0

(1) 팅겨보고 끝내야 할 부분을 언급하십시오 - 이것은 다른 사람들이 미래에이 질문을 읽을 때 도움이 될 것입니다. 그리고 (2) 가장 간단한 방법은 그것을 여러 줄로 만들지 않고 반환 값을보다 구체적으로 바꾸는 것입니다. 예를 들어 답을 편집 할 것입니다. – Alan