zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    对 Excel 工作簿中的数字签名和代码签名的说明
    单例模式
    面向对象
    Des对称加密
    Java获取电脑硬件信息
    鼠标双击事件不可描述的问题
    RSA不对称加密
    JTable表格案例
    控件刷新的奥秘
    反编译插件安装
  • 原文地址:https://www.cnblogs.com/superxuezhazha/p/6641324.html
Copyright © 2011-2022 走看看