首页 > 解决方案 > 我在读取 csv 文件并将单词插入 pyqt 的文本框中时遇到问题。单词没有像应有的那样打印到文本框中

问题描述

这是需要的模块。

import sys
import csv
from csv import *
from PyQt4 import QtCore, QtGui, uic

qtCreatorFile = "Inquiry.ui" # Enter file here.
Ui_MainWindow, QtBaseClass = uic.loadUiType(qtCreatorFile)

class MyApp(QtGui.QMainWindow, Ui_MainWindow):

     Hebrew =  {'a':1,'b':2,'c':3,'d':4,'e':5,'f':6,'g':7,'h':8,'i':9,\
               'j':600,'k':10,'l':20,'m':30,'n':40,'o':50,'p':60,'q':70,'r':80,\
               's':90,'t':100,'u':200,'v':700,'w':900,'x':300,'y':400,'z':500}

其他一些有助于重现问题的重要代码:

创建图形用户界面:

    def __init__(self):
        "Create UI"
        QtGui.QMainWindow.__init__(self)
        Ui_MainWindow.__init__(self)
        self.setupUi(self)
        self.btnCalculate.clicked.connect(self.Calculate)

    def Calculate(self):

事件:

        try:
            Event = str(self.txtInquiry)
        except TypeError:
            pass

Word 文本文件路径:

        y = 'C:/Users/Jacob-C/Documents/words_alpha.txt'

这些是使用的功能。

根据使用的数字系统中的键映射计算每个单词的值。

         def gematric_value(x, L):
            value = 0
            for v in x.lower():
                try:
                    value = value + L[v]
                except KeyError:
                    pass
            return value

模函数大量用于整数减少。

        def MOD_CALC(x, y):
            return (x % y)

这个函数接受一个数字,整数减少它。

        def Check_Value(x):
            if x > 9 and MOD_CALC(x, 9) == 0:
                return (MOD_CALC(x, 9) + 9)
            elif x > 9 and MOD_CALC(x, 9) != 0:
                return MOD_CALC(x, 9)
            else:
                return x

这是不将单词插入纯文本框中的功能。

    def Gematria(f, Hebrew, EN):

打开文本文件并将其转换为 csv 文件。然后读取文本文件中的每个单词并比较单词的数字值和事件的数字值。如果它们匹配,则将单词插入到 qt 表单上的纯文本框中。此功能不符合预期。相反,它不会在纯文本框中插入任何内容。

         with open(f, 'r', newline='') as input_file_name:
                input_file = csv.reader(input_file_name, delimiter=' ', quotechar='|')
                for word in input_file:
                    GV = Check_Value(gematric_value(word, L))
                    if GV == EN:
                        self.txtWords.insertPlainText(", ".join(word))  
            

           

整数减少事件编号

        HN = gematric_value(Event, Hebrew) # Hebrew Event Number
        MOD_HN = Check_Value(HN) # Reduced Hebrew Event Number

电话:

        Gematria(y, Hebrew, MOD_HN)

if __name__ == "__main__":
    app = QtGui.QApplication(sys.argv)
    window = MyApp()
    window.show()
    sys.exit(app.exec_())
Traceback (most recent call last):
  File "C:\Users\Jacob-C\Documents\Numerology_Predict.py", line 146, in <module>
    Launch_Program()
  File "C:\Users\Jacob-C\Documents\Numerology_Predict.py", line 144, in Launch_Program
    Gematria(y, L, EN)
  File "C:\Users\Jacob-C\Documents\Numerology_Predict.py", line 116, in Gematria
    GV = Check_Value(Event_Number(word, L))
  File "C:\Users\Jacob-C\Documents\Numerology_Predict.py", line 95, in Event_Number
    for e in E.lower():
AttributeError: 'list' object has no attribute 'lower'

标签: python-3.x

解决方案


我的答案:

   def Gematria(f, L, EN):
         with open(f, 'r') as input_file:
            for word in input_file:
               GV = Check_Value(Event_Number(word, L))
               if GV == EN:
                   print(word)

推荐阅读