2017-02-24 13 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' 

(または 'ここにいない' 必要に応じて)、あなたはあなたの答えを持っています。

注:ただの書式Webページことができますが、BTN後にスペースを持っているように見えるかもしれません:

self.btn .clicked.connect(click) 

はEDIT:

この部分を変更すると、出力がより詳しく記述してください:

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 

と、この行を変更:

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

へ:

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

追加コメント:あなたは本当に複数行をしたい場合は、あなたがにQLineEditを使用することはできませんが。テキストのみを出力している場合は、複数行にすることができるQLabelを使用します。改行が必要な文字列に '\ n'を追加します。

+0

これは私の問題を解決してくれませんでしたが、まだ何も得られていませんでした。 – Tyrell

+0

ああ、私は1つのことを微調整しました。今はうまくいきました。QLineEdit私のフォルダには、そのファイルのうちの1つがそこにありますが、ファイルの1つがフォルダに入っていないと私に伝えていないことがわかっています。 – Tyrell

+0

(1)あなたの調整が終わったことを言いなさい - (2)最も単純な方法は複数行にするのではなく、戻り値をよりわかりやすいものに変更することです。私は答えを編集して例を挙げます。 – Alan

関連する問題