Python 学習:PyQt4 で GUI アプリ(3)

2015-07-12 :  PCクリニック
本文の前に、
-・・・ -・-
現時点での blogramのランクインカテゴリは、
6、1、1、0、0、 1、0、0、0、0(41)で、換算ポイント 75pt 。
3日前昼「Perl」「化学業界」「グルコサミン」、
「Python」「FM COCOLO」でbg値が若干アップ。
その後「グルコサミン」「Firefox」でbg値若干ダウン/アップ。
今朝方「Firefox」6位にダウン。
「C言語」は全く変化が無かった。
・-・ - -・

さて、本文。

前記事(2015-07-09):「Python 学習:PyQt4 で GUI アプリ(2)
で、
  ・・・・・
  ・・・・・
  その後、不足している「ウィジェット (Widget)」に対応する事にした。

  即ち、
  スライダー「QtGui.QSlider」:
  「PyQt4 tutorial」の「Widgets
  ラジオボタン「QtGui.QRadioButton」と「QtGui.QButtonGroup」:
  「Stack Overflow」の「uncheck radiobutton - PyQt4
  リスト「QtGui.QListWidget」:
  「Python Central」の「PySide/PyQt Tutorial: The QListWidget
  テキストエディットオブジェクト「QtGui.QTextEdit」:
  「PyQtを用いたGUI
  ・・・・・
  ・・・・・
と、

結果、
7つの「ウィジェット (Widget)」に対応した。

今度は、
別窓(子窓:ChildWindow)について学習した。


検索は、例の「Stack Overflow」の
How to create new PyQt4 windows from an existing window?
(そのものズバリ)ですね。
  I've been trying to call a new window from an existing one
   using python3 and Qt4.

  I've created two windows using Qt Designer (the main ・・・ ),
   and I've converted the .ui files generated ・・・ into .py scripts
   - but I can't seem to create new windows from
   the main application.

  I tried doing this:
  ・・・・・
  ・・・・・
いや、“ズバリ”では無くて「Python3」「Qt Designer」版だが、・・・

ここの回答「2」では、・・・・・(若干<紙>流ですが)

import sys
from PyQt4 import QtGui, QtCore
class MainW( QtGui.QDialog ): # any super class is okay
def __init__( self, parent=None ):
super( MainW, self ).__init__( parent )
self.button = QtGui.QPushButton( 'Press', self )
self.button.move( 20, 50 )
self.button.clicked.connect( self.create_child )

self.setWindowTitle( 'tst_subWin' )
self.setGeometry( 300, 200, 300, 250 )

def create_child( self ):
# here put the code that creates the new window and shows it.
child = MainW( self )
child.show()

### if __name__ == '__main__': # QApplication created only here.
app=QtGui.QApplication( sys.argv )
w=MainW(); w.show()
sys.exit( app.exec_() )


とすることで、(幾らでも)子窓を生成できる。

しかし、クラス定義が1つだと同じ形式の窓のみ!
・・・・・別のクラス定義が必要?

すると、情報引き渡しは「global」変数で?


やってみた。
・・・・・こんな感じになる?

import sys
from PyQt4 import QtGui, QtCore

class MainW( QtGui.QWidget ):
def __init__( self ):
super( MainW, self ).__init__()
self.initUI()
def initUI( self ):
self.Lbl1=QtGui.QLabel( '', self )
self.Lbl1.move( 10, 10 )
self.Btn1=QtGui.QPushButton( 'Disp_SubW', self )
self.Btn1.move( 40, 110 )
QtCore.QObject.connect( self.Btn1, QtCore.SIGNAL("clicked()"), self.Btn1Clicked )

self.button = QtGui.QPushButton( 'Press', self )
self.button.move( 120, 200 )
self.button.clicked.connect( self.create_child ) # <<<===*********

self.setWindowTitle( 'Main Window' )
self.setGeometry( 300, 200, 300, 250 ) # 位置(座標、サイズ)はワクを除く
# =====================================================================
def create_child(self): # <<<===**********
# here put the code that creates the new window and shows it.
global child
child = MyWindow(self)
child.show()
def Btn1Clicked( self ):
global stxt
self.Lbl1.setText( str(stxt) )
self.Lbl1.adjustSize()

#########################################################################
class MyWindow(QtGui.QDialog): # any super class is okay
def __init__(self, parent=None):
super(MyWindow, self).__init__(parent)

self.qle=QtGui.QLineEdit( '', self )
self.qle.move( 10, 40 )
self.qle.textChanged[str].connect( self.txtChanged )

self.setWindowTitle( 'Sub Window' )
self.setGeometry( 700, 200, 200, 100 )

def txtChanged( self, text ):
global stxt
stxt = text

#########################################################################
stxt=''; child=0
app=QtGui.QApplication( sys.argv )
w=MainW(); w.show()
sys.exit( app.exec_() )



以上、感じを掴むレベルだが。
出来ました。


本日はここまで。


見ていただいた序でとは厚かましい限りですが、
お帰りに投票して頂けるとなお嬉しいです。 ⇒ blogram投票ボタン


150525
関連記事
スポンサーサイト

コメントの投稿

管理者にだけ表示を許可する

おきてがみ/blogram
blogram投票ボタン



おきてがみ

最新記事
カレンダー
02 | 2017/03 | 03
- - - 1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31 -
月別アーカイブ
カテゴリ
最新コメント
検索フォーム
リンク
プロフィール

<紙>

Author:<紙>
ようこそ。
「パソコンヲタクの雑記帳」
もろもろなことを綴っています。
パソコン ヲタクってねくら?
画像は kami でなく kani です。

カウンター(fc2、i2i) /Google Analytics


i2i(from 2010-08-24)
Total =
Today  =  
Yesterday=
アンチエイジング

Google Analytics
ブックマーク