4
私はPython 2.5とPyQt 4.8.6をインストールしました。 Os - Windows Xp Sp2。私はTreeWidgetを満たすために次のコードを使用します:PyQt QTreeWidget.clear()がクラッシュする
def updateTreeWidget(self, widget, results):
""" Updates the widget with given results """
widget.clear()
for item in results:
temp = QtGui.QTreeWidgetItem()
j = 0
for elem in item:
temp.setText(j , str(elem))
j += 1
widget.addTopLevelItem(temp)
for column in range(widget.columnCount()):
widget.resizeColumnToContents(column)
2度目の使用でクラッシュします。それは問題なく動作します
または
widget.clear()
:私は、次のいずれかの行をコメントアウトした場合。
スレッド内の関数を60秒ごとに呼び出します。ここにMyThreadクラスの定義があります。
class MyThread(threading.Thread):
def __init__(self, db, widget, function, script, parameter):
threading.Thread.__init__(self)
self.db = db
self.function = function
self.script = script
self.parameter = parameter
self.widget = widget
self.event = threading.Event()
def run(self):
while 1:
self.event.wait(60)
parameter = [getCurrentTimeStr()] + self.parameter
res = self.db.getQuery(self.script % tuple(parameter))
self.function(self.widget, res)
このスレッド
が開始されたときにはinitメインウィンドウ ()内:class MainWnd(QtGui.QMainWindow):
def __init__(self, parent = None):
# some code
self.db = DbAccess()
QtGui.QWidget.__init__(self, parent)
self.ui = Ui_mainWnd()
self.ui.setupUi(self)
self.thread = MyThread(self.db, self.ui.treeWidget, self.updateTreeWidget, self.script, self.param)
self.thread.start()
ウィジェットはQtのデザイナを使用して作成されました。
'QTreeWidget'を作成するコードの部分と、その関数をどこで呼び出すことができますか? – alexisdm
自分で 'j'を数えるのではなく、列挙型(item):' j、elemに対してもっとpythonicな解を考えてみましょう。 –