QDialog:输入对话框、颜色对话框、字体对话框、文件对话框

# _*_ coding:utf-8 _*_
import sys
from PyQt4 import QtCore,QtGui
class Example(QtGui.QWidget):
    def __init__(self):
        super(Example,self).__init__()
        self.initUI()
    def initUI(self):
        self.button=QtGui.QPushButton('Dialog',self)
        self.button.setFocus()
        self.button.move(20,20)
        self.connect(self.button,QtCore.SIGNAL('clicked()'),self.showDialog)
        self.setFocus()
        self.label=QtGui.QLineEdit(self)
        self.label.setMaximumWidth(20)
        self.label.move(130,22)

        self.widget=QtGui.QWidget(self)
        self.widget.setStyleSheet("QWidget{background-color:red}" )

        grid=QtGui.QGridLayout()

        grid.addWidget(QtGui.QPushButton(u'我是个按钮'),1,1)
        grid.addWidget(QtGui.QPushButton(u'我是个按钮'), 0, 0)

        #self.setLayout(grid)
        self.widget.setLayout(grid)
        self.widget.move(150,22)
        self.resize(100,100)
        #self.widget.setGeometry(150, 22, 100, 150)
        self.buuton2=QtGui.QPushButton(u'设置背景色',self)
        self.connect(self.buuton2,QtCore.SIGNAL('clicked()'),self.changeBackground)
        self.buuton2.move(220,22)

        self.setWindowTitle('InputDialog')
        self.setGeometry(300,300,350,80)

    def showDialog(self):
        text,ok=QtGui.QInputDialog.getText(self,'Input Dialog','Enter your name');
        if ok:
            self.label.setText(str(text))
    def changeBackground(self):
        col=QtGui.QColorDialog.getColor()
        if col.isValid():
            self.widget.setStyleSheet("QWidget { background-color: %s }"
                                      % col.name())

    def showDialog(self):

        font, ok = QtGui.QFontDialog.getFont()
        if ok:
            self.label.setFont(font)

    def showDialog(self):

        filename = QtGui.QFileDialog.getOpenFileName(self, 'Open file',
                                                     '/home')
        fname = open(filename)
        data = fname.read()
        self.textEdit.setText(data)


app=QtGui.QApplication(sys.argv)
ex=Example()
ex.show()
app.exec_()
View Code

代码中给出输入对话框和颜色对话框的简单应用,另外两个大同小异,没有实现。这里我探索一下QWidget的复合。即在一个Qwidget中叠加多个Qwidget。

对于它们之间的事件关系我没有研究。这里仅仅关注界面构成:

self.widget=QtGui.QWidget(self)
        self.widget.setStyleSheet("QWidget{background-color:red}" )

        grid=QtGui.QGridLayout()

        grid.addWidget(QtGui.QPushButton(u'我是个按钮'),1,1)
        grid.addWidget(QtGui.QPushButton(u'我是个按钮'), 0, 0)

        #self.setLayout(grid)
        self.widget.setLayout(grid)
        self.widget.move(150,22)

这里我在主窗口里添加了一个widget,同时对这个widget使用QgridLayout进行布局管理。我发现这个widget的大小不受我代码的控制了。应该是布局管理器的规则影响。

这样同理我可以嵌套多个widget,而且通过对grid的删除可以实现选项卡的功能。666

posted @ 2017-03-29 19:16  超级学渣渣  阅读(1496)  评论(0编辑  收藏  举报