PyQt4-ダイアログ

PyQt4には、事前定義とカスタムの2種類のダイアログがあります。



定義済みのダイアログ



QInputDialog


QInputDialogは、ユーザーから単一の値を取得するためのシンプルなダイアログを提供します。 値には、文字列、数値、またはリストのアイテムを指定できます。



#!/usr/bin/python

# inputdialog.py



import sys

from PyQt4 import QtGui

from PyQt4 import QtCore



class InputDialog ( QtGui. QWidget ) :

def __init__ ( self , parent= None ) :

QtGui. QWidget . __init__ ( self , parent )

self . setGeometry ( 300 , 300 , 350 , 80 )

self . setWindowTitle ( 'InputDialog' )

self . button = QtGui. QPushButton ( 'Dialog' , self )

self . button . setFocusPolicy ( QtCore. Qt . NoFocus )

self . button . move ( 20 , 20 )

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

self . setFocus ( )

self . label = QtGui. QLineEdit ( self )

self . label . move ( 130 , 22 )



def showDialog ( self ) :

text, ok = QtGui. QInputDialog . getText ( self , 'Input Dialog' , 'Enter your name:' )

if ok:

self . label . setText ( unicode ( text ) )



app = QtGui. QApplication ( sys . argv )

icon = InputDialog ( )

icon. show ( )

app. exec_ ( )








ボタンと入力行はフォーム上にあります。 ボタンをクリックすると、入力ダイアログが開き、テキスト値が取得されます。 入力したテキストは、入力行に表示されます。



text, ok = QtGui. QInputDialog . getText ( self , 'Input Dialog' , 'Enter your name:' )







この行は入力ダイアログを表示します。 1行目はダイアログのタイトル、2行目はメッセージテキストです。 ダイアログは、入力されたテキストと論理値を返します。 [OK]をクリックすると、ブール値はtrueになり、そうでない場合はfalseになります。

入力ダイアログ



QColorDialog


QColorDialogは、色を選択するためのダイアログを提供します。

#!/usr/bin/python

# colordialog.py



import sys

from PyQt4 import QtGui

from PyQt4 import QtCore



class ColorDialog ( QtGui. QWidget ) :

def __init__ ( self , parent= None ) :

QtGui. QWidget . __init__ ( self , parent )

color = QtGui. QColor ( 0 , 0 , 0 )

self . setGeometry ( 300 , 300 , 250 , 180 )

self . setWindowTitle ( 'ColorDialog' )

self . button = QtGui. QPushButton ( 'Dialog' , self )

self . button . setFocusPolicy ( QtCore. Qt . NoFocus )

self . button . move ( 20 , 20 )

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

self . setFocus ( )

self . widget = QtGui. QWidget ( self )

self . widget . setStyleSheet ( "QWidget { background-color: %s }" % color. name ( ) )

self . widget . setGeometry ( 130 , 22 , 100 , 100 )



def showDialog ( self ) :

color = QtGui. QColorDialog . getColor ( )

self . widget . setStyleSheet ( "QWidget { background-color: %s }" % color. name ( ) )



app = QtGui. QApplication ( sys . argv )

cd = ColorDialog ( )

cd . show ( )

app. exec_ ( )








この例では、ボタン( QPushButton )とQWidgetがフォーム上にあります。 ウィジェットの背景は黒く塗りつぶされています。 QColorDialogを使用して、背景を指定した色に変更できます。



color = QtGui. QColorDialog . getColor ( )







この行はQColorDialogを開きます



self . widget . setStyleSheet ( "QWidget { background-color: %s }" % color. name ( ) )







スタイルシートを使用して背景色を変更します。

カラーピッカー



QFontDialog


QFontDialogは、フォントを選択するためのダイアログを提供します。

#!/usr/bin/python

# fontdialog.py



import sys

from PyQt4 import QtGui

from PyQt4 import QtCore



class FontDialog ( QtGui. QWidget ) :

def __init__ ( self , parent= None ) :

QtGui. QWidget . __init__ ( self , parent )

hbox = QtGui. QHBoxLayout ( )

self . setGeometry ( 300 , 300 , 250 , 110 )

self . setWindowTitle ( 'FontDialog' )

button = QtGui. QPushButton ( 'Dialog' , self )

button. setFocusPolicy ( QtCore. Qt . NoFocus )

button. move ( 20 , 20 )

hbox. addWidget ( button )

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

self . label = QtGui. QLabel ( 'Knowledge only matters' , self )

self . label . move ( 130 , 20 )

hbox. addWidget ( self . label , 1 )

self . setLayout ( hbox )



def showDialog ( self ) :

font, ok = QtGui. QFontDialog . getFont ( )

if ok:

self . label . setFont ( font )



app = QtGui. QApplication ( sys . argv )

cd = FontDialog ( )

cd . show ( )

app. exec_ ( )








この例では、 QPushButtonQLabelをフォームに配置しました。 QFontDialogの助けを借りて、 QLabelのフォントを変更しました



hbox. addWidget ( self . label , 1 )







サイズ変更可能なQLabelを作成しました 。 これは、さまざまなフォントを使用するとテキストが大きくなり、碑文が完全に表示されない可能性があるためです。



font, ok = QtGui. QFontDialog . getFont ( )







ここで、フォント選択ダイアログを開きます。



if ok:

self . label . setFont ( font )








[OK]ボタンをクリックすると、 QLabelフォントが変更されます。

フォント選択ダイアログ



QFileDialog


QFileDialogは、ユーザーがファイルまたはフォルダーを選択できるダイアログです。 ファイルは、保存とオープンの両方に指定できます。

#!/usr/bin/python

# openfiledialog.py



import sys

from PyQt4 import QtGui

from PyQt4 import QtCore



class OpenFile ( QtGui. QMainWindow ) :

def __init__ ( self , parent= None ) :

QtGui. QMainWindow . __init__ ( self , parent )

self . setGeometry ( 300 , 300 , 350 , 300 )

self . setWindowTitle ( 'OpenFile' )

self . textEdit = QtGui. QTextEdit ( )

self . setCentralWidget ( self . textEdit )

self . statusBar ( )

self . setFocus ( )

exit = QtGui. QAction ( QtGui. QIcon ( 'open.png' ) , 'Open' , self )

exit. setShortcut ( 'Ctrl+O' )

exit. setStatusTip ( 'Open new File' )

self . connect ( exit, QtCore. SIGNAL ( 'triggered()' ) , self . showDialog )



menubar = self . menuBar ( )

file = menubar. addMenu ( '&File' )

file . addAction ( exit )



def showDialog ( self ) :

filename = QtGui. QFileDialog . getOpenFileName ( self , 'Open file' , '/home' )

file = open ( filename )

data = file . read ( )

self . textEdit . setText ( data )



app = QtGui. QApplication ( sys . argv )

cd = OpenFile ( )

cd . show ( )

app. exec_ ( )








この例では、メニューバー、 QTextEdit、およびステータスバーがフォームにあります。 メニュー項目を使用すると、ファイル選択ダイアログを開くことができます。 選択したファイルの内容がQTextEditにロードされます 。 ステータスバーは美容目的のみに表示されます:)



class OpenFile ( QtGui. QMainWindow ) :

...

self . textEdit = QtGui. QTextEdit ( )

self . setCentralWidget ( self . textEdit )








この例はQMainEditに基づいていますが、これはQTextEditフォームセンターを埋めたためです。 これは、 レイアウトに頼らずにQMainWindowで簡単に実行できます



filename = QtGui. QFileDialog . getOpenFileName ( self , 'Open file' , '/home' )







QFileDialogダイアログを開きます。 getOpenFileNameメソッドの2番目のパラメーターはウィンドウのタイトルです。 3番目は開始ディレクトリを示します。 ファイルフィルタは、デフォルトで[すべてのファイル(*)]に設定されています。



file = open ( filename )

data = file . read ( )

self . textEdit . setText ( data )








選択されたファイルの内容はQTextEditによって読み込まれ、入力されます

ファイル選択ダイアログ




All Articles