Home >>
Python >> PyQt4 Sixth
■PyQt4でのその他のコンポーネント(GUI部品)
import sys, time, thread, math
from PyQt4.QtGui import *
from PyQt4.QtCore import *
class MyWindow(QWidget):
button = None
slider = None
colorbutton = None
colorname = [ "Red", "Green", "Blue", "Magenta", "Cyan", "Yellow" ]
angle = 0
scale = 1
color = Qt.red
def __init__( self, parent=None ):
QWidget.__init__(self, parent )
self.resize( 600, 400 )
# 回転させるためのPushButtonを登録
self.button = QPushButton( "Rotate", self )
self.button.resize( 80, 30 )
self.button.move( 50, 50 )
QObject.connect( self.button, SIGNAL( "clicked( )" ), self.rotRect )
# 大きさを変えるためのSliderを登録
self.slider = QSlider( Qt.Horizontal, self )
self.slider.resize( 200, 30 )
self.slider.move( 200, 50 )
self.slider.setMinimum( 10 )
self.slider.setMaximum( 1000 )
self.slider.setValue( 10 )
QObject.connect( self.slider, SIGNAL( "sliderMoved(int)" ), self.setScale )
# 色を変えるためのポップアップメニューを登録
self.colorbutton = QPushButton( "Color", self )
self.colorbutton.resize( 80, 30 )
self.colorbutton.move( 420, 50 )
menu = QMenu( self )
actionlist = [ self.setRed, self.setGreen, self.setBlue, self.setMagenta,\
self.setCyan, self.setYellow ]
for m in range( len( self.colorname) ):
menu.addAction( self.colorname[ m ], actionlist[ m ] )
self.colorbutton.setMenu( menu )
# 描画のメソッド
def paintEvent( self, event ):
paint = QPainter( )
paint.begin( self )
paint.translate( 300, 200 )
paint.rotate( self.angle )
paint.scale( self.scale, self.scale )
paint.fillRect( -50, -20, 100, 40, self.color )
paint.end( )
# 回転させるメソッド
def rotRect( self ):
self.angle += 10
if self.angle >= 180: self.angle = 0
self.update( )
# 大きさを変えるメソッド
def setScale( self ):
value = self.slider.value( )
self.scale = math.log10( value )
self.update( )
# 色を変えるメソッド
def setRed( self ):
self.color = Qt.red; self.update( )
def setGreen( self ):
self.color = Qt.green; self.update( )
def setBlue( self ):
self.color = Qt.blue; self.update( )
def setMagenta( self ):
self.color = Qt.magenta; self.update( )
def setCyan( self ):
self.color = Qt.cyan; self.update( )
def setYellow( self ):
self.color = Qt.yellow; self.update( )
app = QApplication( sys.argv )
mywindow = MyWindow( )
mywindow.show( )
sys.exit( app.exec_( ) )