のんびりしているエンジニアの日記

ソフトウェアなどのエンジニア的な何かを書きます。

PyQt ボタンクリックによるイベント動作

Sponsored Links

皆さんこんにちは
お元気ですか?私は普通に生きています。

さて、今日はPyQtにてボタンクリックによる動作を実行したいと思います。

まずはサンプルコードを御覧ください。

#coding:utf-8
import PyQt4.QtCore as QtCore
import PyQt4.QtGui as QtGui
import sys

class MainMenu(QtGui.QWidget):
	def __init__(self,parent=None):
		QtGui.QWidget.__init__(self, parent=parent)
		self.setGeometry(10,10,40,300)
		button = QtGui.QPushButton('Close',self)
		self.Label = QtGui.QLabel('print',self)
		self.Label.setGeometry(20,20,40,40)
		self.connect(button,QtCore.SIGNAL('clicked()'),self.changeText)

	def changeText(self):
		self.Label.setText("abcd")

if __name__ == '__main__':
	application = QtGui.QApplication(sys.argv)

	main = MainMenu()
	main_window =QtGui.QMainWindow()
	main_window.setCentralWidget(main)
	main_window.show()

	application.exec_()

f:id:tereka:20140628230445p:plain
ボタンをクリックするとabcdと表示されます。

ではソースコードの解説へ

Widget

button = QtGui.QPushButton('Close',self)
self.Label = QtGui.QLabel('print',self)

Widgetを生成しています。第一引数に表示文字、第二引数は親(スーパークラス)を入れています。

Position

self.Label.setGeometry(20,20,40,40)

左上から20(横)、20(縦)の位置に配置し、40、40のスペースを取る感じです。

Connect

今の状態だとボタンが有るだけでクリックしても動作しません
そこで、ボタンと起動するメソッドを結びつけることが必要です。

self.connect(button,QtCore.SIGNAL('clicked()'),self.changeText)

第一引数から結びつける対象、イベント(今回はクリック)、実行するメソッドです

これらを組み合わせるだけで、実際にクリックした時に実行するGUIを作ることができます。