メインウィンドウにボタンを作成しました。このボタンをクリックすると、MySqlデータベースのデータ行を含むツリーウィジェットがある検索ウィンドウが表示されます。私が.pyファイルを通して検索ウィンドウを開くと、それはデータを表示しますが、私がプログラムしたボタンを通してそれを開くと、データは表示されません。これは、メインウィンドウを実行し、検索ウィンドウを開くボタン機能を作成するプログラムのコードです。pyqtのUIでデータが表示されない
from PyQt4 import QtGui
from MainMenu import Ui_MainWindow
from StudentSearch import Ui_Student_search
import DB_manager_students
class MainWindow(Ui_MainWindow):
def __init__(self, parent=None):
QtGui.QMainWindow.__init__(self, parent)
self.setupUi(self)
self.pushButton_3.clicked.connect(self.handleButton)
self.window2 = None
def handleButton(self):
if self.window2 is None:
self.window2 = Student_search()
self.window2.show()
class Student_search(Ui_Student_search):
def __init__(self, parent=None):
QtGui.QWidget.__init__(self, parent)
self.setupUi(self)
if __name__ == '__main__':
import sys
app = QtGui.QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec_())
私は間違っていますか?なぜ私はそれを開くとデータを表示するのでしょうか?
編集:
Student_search.py
からclass Ui_Student_search(QtGui.QWidget):
def __init__(self, database, tableName):
QtGui.QWidget.__init__(self)
self.dbu = DB_manager_students.DatabaseUtility(database, tableName)
self.setupUi(self)
self.UpdateTree()
(...)
def UpdateTree(self):
col = self.dbu.GetColumns()
table = self.dbu.GetTable()
for c in range(len(col)):
self.StudentTreeWidget.headerItem().setText(c, col[c][0])
self.StudentTreeWidget.clear()
for item in range(len(table)):
QtGui.QTreeWidgetItem(self.StudentTreeWidget)
for value in range(len(table[item])):
self.StudentTreeWidget.topLevelItem(item).setText(value, str(table[item][value]))
編集:これは
に必要なコンストラクタの引数を養うために、あなたの
MainWindow
を更新する必要がありますことを意味ウィンドウが表示されていますか? – danideeStudent_Searchはどのように更新されていますか?私はmysqlデータベースから情報を引き出すコードは見当たりませんか? Ui_Student_searchとは何ですか? '__init__'メソッドで更新していますか? 'Student_search .__ init__'から' Ui_Student_search .__ init__'を呼び出していないからです。 –
Ui_Student_searchは、StudentSearch.pyファイルで作成されたクラスです。私は質問に追加したStudent_search.pyのテーブルに値を設定するUpdateTree()関数を作成しました。 – DDVlad