- Python2.5
- PyQt-4.4.3
- kinterbasdb3(KISデータベース-Firebird)
- xlrd-0.6
Windowsユーザー):
1.キャビネットから食器を取り出します(保管設定)
一般に、スクリプト言語の場合、この質問は価値がありません。タイプsettings.pyの設定ファイルを作成し、コードレベルで安全に実行できるからです。
# -*- coding: cp1251 -*-
host='localhost/3051:intur'
user='SYSDBA'
path='d:\\dlogs\\scanner\\xls'
oprts = (
u'',
u'',
u'',
u'',
u'',
)
プログラムで変数を取得する方法は次のとおりです。
mod = __import__(modName)
host = getattr(mod, 'host', 'horn:intur')
user = getattr(mod, 'user', 'SYSDBA')
2.フォームの説明
Qt Softwareは、ドキュメントの点で一般的にハンサムです。または、GUIを描画するためのツールを比較する場合、ここでも優れています。 QtDesigner +でペイントしたプログラムのメインウィンドウは、処理が必要なウィジェットからの信号をマークしました。
もちろん、デザイナーでフォームをすばやく組み立てるには、レイアウトとスペーサーの形成メカニズムについてもう少し理解する必要があります。 アプリケーションにウィンドウを上げるための2つのオプションがあります。必要なプログラミング言語でファイルを生成するか、Qt特殊モジュールを使用してxml記述ファイルからクラスを構築します。 私は通常ファイルを生成しますが、これはより良いものとは言えませんが、より便利なようです。 Pythonの場合、PyQtが提供するpyuic.batをプロジェクトディレクトリにコピーし、デザイナーで作業しながらウィンドウハンドラクラスを生成するだけです。
私にとっては、メインウィンドウでは次のようになります。
pyuic.bat -o mwnd.py mwnd.ui
wx Qtとは異なり、それを生成するのはメインウィンドウクラスの相続人ではなく、ウィンドウの基本クラスを引数として受け取り、コントロールを「ハング」させる修飾子クラスです。 C ++で生成する場合、Qtは多重継承を使用し、アプリケーションのクラスはベースウィンドウクラスと修飾子クラスの継承者になります。 ファイルを生成するときに、pyuicスロットが基本クラスにハングアップするため、矛盾が発生します。シグナルハンドラーは、ウィンドウの基本クラスの継承者であり、生成されたピュイックリンクの修飾子クラスは、同じウィンドウのコントロールにあります。
def _initApp(self): self.mwnd, self.mwnd.ui = MainWnd(), Uwnd() self.mwnd.ui.setupUi(self.mwnd)
モディファイヤクラスをウィンドウベースクラスの継承者に接続しましたが、コントロールにアクセスする必要があるときに判明し、self.ui。 "name"として通信しました。 当たり前のことのように思えますが、それが初めてではなく、どのくらいの頻度で思い浮かびましたか。
! また、Pythonが属性およびクラスメソッドの名前のキーワードをダイジェストしないため、変数self.passまたはself.exec()を設定することはできません。 したがって、各PyQtアプリケーションsys.exit(app.exec_())の面白い碑文
3.パンをストーブに置くか、アプリケーションを起動します
main.pyのコードは次のとおりです。そのタスクは、開始、設定ファイルのロード、パスワードの要求、成功した場合はメインアプリケーションウィンドウの起動です。
main.py
4.目玉焼きに卵を入れることを忘れないでください。
メインアプリケーションウィンドウの継承者(MainWnd)は、ユーザーの行動を追跡する機能を実行します。ここで、デザイナーで生成したスロットが表示されます。ここで、コードのメインタスクは、データベースにファイルをロードするアプリケーションのメインクラスの最も透明でシンプルなウィンドウ管理機能です。
アプリケーションのメイン機能を実行するクラス-データの解析とロード(MainModel)はメインウィンドウがないと意味がないため、ウィンドウの属性にします。 Pythonでxlsファイルを解析するのはささいな使い方であり、すばらしいxlrdライブラリは、かさばるOLEマシンを上げることなくファイルを直接処理するため、さらに高速です。 アプリケーションでは、変更されたファイルのみをモードでダウンロードできるため、データベースに保存されている変更日付と最後のロードを比較するためにMainModelがなくなった部分です。 そのため、アプリケーションのメイン作業クラス以外に、データベースと通信する人はいません。これに、sql "terms"にMainModel命令を格納する小さなクラス(dbConn)を与えます。
Wndmodel.py
一般に、科学では、変数(たとえば、app)をContainerクラスから階層レベル2クラスにプルするため、プログラムの特定の厄介さがあります。 大規模なプログラムでは、このような変数は
その結果、目的に使用できるアプリケーションテンプレートを取得し、WndModel.pyを破棄し、ベースウィンドウの子孫を記述し、タスクを実装するクラスを作成しました。そして今でもすべてが動作しているようです。
PS完全なソースコードはこちら
UPD。 外部のコードガードにコードを持ち出しました。Habrでpythonコードを正しく強調表示する方法を誰かが教えてくれたら、ありがたいです。