質問編集履歴
4
編集
test
CHANGED
File without changes
|
test
CHANGED
@@ -13,9 +13,14 @@
|
|
13
13
|
事前に準備しておいたテキストファイルから正規表現で取得するようにしたいです
|
14
14
|
### 発生している問題・エラーメッセージ
|
15
15
|
```
|
16
|
+
Traceback (most recent call last):
|
17
|
+
File "/Users/komadatakahito/Documents/BOT/GUI/mainWindow.py", line 35, in buttonTalkSlot
|
18
|
+
response = self.pityna.dialogue(value)
|
19
|
+
File "/Users/komadatakahito/Documents/BOT/GUI/pityna.py", line 21, in dialogue
|
20
|
+
return self.responder.response(input)
|
21
|
+
File "/Users/komadatakahito/Documents/BOT/GUI/responder.py", line 27, in response
|
16
22
|
self.dictionary.pattern['pattern'],
|
17
|
-
AttributeError: 'dict' object has no attribute 'pattern'
|
23
|
+
AttributeError: 'dict' object has no attribute 'pattern'```
|
18
|
-
```
|
19
24
|
### 該当のソースコード
|
20
25
|
```
|
21
26
|
{responder.py}
|
3
本文修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -2,6 +2,10 @@
|
|
2
2
|
|
3
3
|
お初です。
|
4
4
|
pythonの初心者用の書物で簡易的な会話BOTシステムを作っています。
|
5
|
+
書物はpythonプログラミングパーフェクトマスターです。
|
6
|
+
linkはこちらです。
|
7
|
+
https://www.shuwasystem.co.jp/book/9784798063676.htmlです。
|
8
|
+
###################################
|
5
9
|
このシステム主軸となるclassを作るresponder.pyで
|
6
10
|
正規表現を返す機能を実装中に以下のエラーメッセージが発生しました。
|
7
11
|
|
2
本文の修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -88,13 +88,83 @@
|
|
88
88
|
patternsDictionary.setdefault('phrases', []).append(prs)
|
89
89
|
return patternsDictionary
|
90
90
|
|
91
|
+
## 実行##
|
92
|
+
{main.py}
|
93
|
+
import sys
|
94
|
+
from PyQt5 import QtWidgets
|
95
|
+
import mainWindow
|
96
|
+
## このファイルが直接実行された場合に
|
97
|
+
if __name__ == "__main__":
|
98
|
+
app = QtWidgets.QApplication(
|
99
|
+
sys.argv
|
100
|
+
)
|
101
|
+
win = mainWindow.MainWindow()
|
102
|
+
win.show()
|
103
|
+
ret = app.exec_()
|
104
|
+
sys.exit(ret)
|
91
105
|
|
106
|
+
{mainWindow.py}
|
107
|
+
# from urllib import response
|
108
|
+
import pityna as pityna
|
109
|
+
from PyQt5 import QtWidgets
|
110
|
+
import qt_PitynaUI
|
111
|
+
|
112
|
+
#QtWidgets.QMainWindowを継承したサブクラスUI画面の構築を行う
|
113
|
+
class MainWindow(QtWidgets.QMainWindow):
|
114
|
+
#初期化のための処理
|
115
|
+
def __init__(self):
|
116
|
+
#スーパークラスのinit()を呼び出す
|
117
|
+
super().__init__()
|
118
|
+
self.pityna = pityna.Pityna('pityna')
|
119
|
+
#pitynaオブジェクトを生成
|
120
|
+
self.action = True
|
121
|
+
#ラジオボタンの状態を初期化
|
122
|
+
self.ui = qt_PitynaUI.Ui_MainWindow()
|
123
|
+
#Ui_MainWindow()オブジェクトを生成
|
124
|
+
self.ui.setupUi(self)
|
125
|
+
#setupUi()で画面を構築そしてMAINWINDOW自身を引数にすることが大事
|
126
|
+
|
127
|
+
def putlog(self, str):
|
128
|
+
#QListWidgetクラスのaddmin()でログをリストに追加
|
129
|
+
self.ui.listWidget.addItem(str)
|
130
|
+
def prompt(self):
|
131
|
+
p = self.pityna.get_name()
|
132
|
+
if self.action == True:
|
133
|
+
p += ':' + self.pityna.get_responder_name()
|
134
|
+
return p + '> '
|
135
|
+
def buttonTalkSlot(self):
|
136
|
+
value = self.ui.lineEdit.text()
|
137
|
+
|
138
|
+
if not value:
|
139
|
+
self.ui.labelResponse.setText('なに?')
|
140
|
+
else:
|
141
|
+
response = self.pityna.dialogue(value)
|
142
|
+
self.ui.labelResponse.setText(response)
|
143
|
+
self.putlog('> ' + value)
|
144
|
+
self.putlog(self.prompt() + response)
|
145
|
+
self.ui.lineEdit.clear()
|
146
|
+
def closeEvent(self, event):
|
147
|
+
reply = QtWidgets.QMessageBox.question(
|
148
|
+
self,
|
149
|
+
'確認',
|
150
|
+
"プログラムを終了しますか?",
|
151
|
+
buttons = QtWidgets.QMessageBox.Yes |
|
152
|
+
QtWidgets.QMessageBox.No
|
153
|
+
)
|
154
|
+
if reply == QtWidgets.QMessageBox.Yes:
|
155
|
+
event.accept()
|
156
|
+
else:
|
157
|
+
event.ignore()
|
158
|
+
def showResponderName(self):
|
159
|
+
self.action = True
|
160
|
+
def hiddenResponderName(self):
|
161
|
+
self.action = False
|
92
162
|
```
|
93
163
|
### 試したこと
|
94
164
|
|
95
165
|
dictにpatternがないとのことでソースコードから見直してみましたが行き詰まりました
|
96
166
|
|
97
167
|
### 補足情報(FW/ツールのバージョンなど)
|
168
|
+
python=3.913
|
98
169
|
|
99
|
-
ここにより詳細な情報を記載してください。
|
100
170
|
|
1
質問本文の追記・修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -6,8 +6,8 @@
|
|
6
6
|
正規表現を返す機能を実装中に以下のエラーメッセージが発生しました。
|
7
7
|
|
8
8
|
### 実現したいこと
|
9
|
-
事前に準備しておいたテキストファイルから正規表現で取得するようにしたいです
|
9
|
+
事前に準備しておいたテキストファイルから正規表現で取得するようにしたいです
|
10
|
-
### 発生している問題・エラーメッセー
|
10
|
+
### 発生している問題・エラーメッセージ
|
11
11
|
```
|
12
12
|
self.dictionary.pattern['pattern'],
|
13
13
|
AttributeError: 'dict' object has no attribute 'pattern'
|