Qt Designerの使い方に慣れる

「Line Edit」と「Push Button」2つを適当に配置する。ボタンそれぞれのプロパティの「text」を書き換えるとボタンに表示される文字が変わる。ここでは「Clear」と「Close」に変更した。

ボタンを押したときにどこで何が起こるか、ということを定義しなければならない。ここでは、「Clear」ボタンを押したとき上の「Line Edit」にユーザーが入力した文字をクリアする。「Close」ボタンを押したときにはこのパネルを閉じる。これらのイベントは、「signal-slot connection」により実現される。このセットアップはQt Designerで行うことができる。
ウィジェットを編集」モードになっているのを「シグナル/スロットを編集」モードに切り替える。「Clear」ボタンから文字入力欄までマウスをドラッグすると設定ダイアログが表示される。シグナルとして「clicked()」、スロットとして「clear()」を選択する

同じように「Close」ボタンから画面上の空欄までマウスでドラッグする。「シグナル/スロット接続を設定」ダイアログでは「clicked()」と「close()」を選択する。

すべての設定は完了。

ファイルを拡張子がuiのファイルとして保存する。これをpyuic4でpythonスクリプトへ変換する。

> pyuic4 closeapp.ui -o closeapp.py

自動生成されたスクリプト(closeapp.py)は以下の通り。このコードはいじらない。

# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'closeapp.ui'
#
# Created: Tue Oct 21 10:59:12 2014
#      by: PyQt4 UI code generator 4.9.6
#
# WARNING! All changes made in this file will be lost!

from PyQt4 import QtCore, QtGui

try:
    _fromUtf8 = QtCore.QString.fromUtf8
except AttributeError:
    def _fromUtf8(s):
        return s

try:
    _encoding = QtGui.QApplication.UnicodeUTF8
    def _translate(context, text, disambig):
        return QtGui.QApplication.translate(context, text, disambig, _encoding)
except AttributeError:
    def _translate(context, text, disambig):
        return QtGui.QApplication.translate(context, text, disambig)

class Ui_Dialog(object):
    def setupUi(self, Dialog):
        Dialog.setObjectName(_fromUtf8("Dialog"))
        Dialog.resize(279, 146)
        self.lineEdit = QtGui.QLineEdit(Dialog)
        self.lineEdit.setGeometry(QtCore.QRect(40, 20, 201, 21))
        self.lineEdit.setObjectName(_fromUtf8("lineEdit"))
        self.pushButton = QtGui.QPushButton(Dialog)
        self.pushButton.setGeometry(QtCore.QRect(100, 60, 75, 23))
        self.pushButton.setObjectName(_fromUtf8("pushButton"))
        self.pushButton_2 = QtGui.QPushButton(Dialog)
        self.pushButton_2.setGeometry(QtCore.QRect(100, 100, 75, 23))
        self.pushButton_2.setObjectName(_fromUtf8("pushButton_2"))

        self.retranslateUi(Dialog)
        QtCore.QObject.connect(self.pushButton, QtCore.SIGNAL(_fromUtf8("clicked()")), self.lineEdit.clear)
        QtCore.QObject.connect(self.pushButton_2, QtCore.SIGNAL(_fromUtf8("clicked()")), Dialog.close)
        QtCore.QMetaObject.connectSlotsByName(Dialog)

    def retranslateUi(self, Dialog):
        Dialog.setWindowTitle(_translate("Dialog", "Dialog", None))
        self.pushButton.setText(_translate("Dialog", "Clear", None))
        self.pushButton_2.setText(_translate("Dialog", "Close", None))

これだけでは実行できないので、表示して実行するコードを書く。ファイル名はcallcloseapp.pywとする。拡張子をpywとしたのは、実行時にコンソールを表示しないようにするため。

import sys
from closeapp import *

class MyForm(QtGui.QDialog):
    def __init__(self, parent=None):
        QtGui.QWidget.__init__(self,parent)
        self.ui = Ui_Dialog()
        self.ui.setupUi(self)
       
if __name__ == "__main__":
    app = QtGui.QApplication(sys.argv)
    myapp = MyForm()
    myapp.show()
    sys.exit(app.exec_())

これで画面が表示されるようになる。

> python callcloseapp.pyw


Introduction to Python Programming and Developing GUI Applications With PyQT
Introduction to Python Programming and Developing GUI Applications With PyQTB. M. Harwani

Course Technology Ptr 2011-12
売り上げランキング : 11787


Amazonで詳しく見る
by G-Tools