コード例 #1
0
def bn_browse_for(vip, k):
    Dialog = QWidget()
    Dialog.resize(50, 70) # *cs.RESIZE_BROWSE_DIALOG
    Dialog.move(100, 100)

    def _set_file_path(sk, file_extension):
        new_path = str(QFileDialog.getOpenFileName(Dialog, 'Open a file', os.sep, "*."+file_extension))
        if new_path: vip.set(sk, {k : new_path}) # this is a le change, triggered from this bn action
        return new_path

    def _set_dir_path(sk):
        new_path = str(QFileDialog.getExistingDirectory(Dialog, 'Open a folder', os.sep, QFileDialog.ShowDirsOnly))
        if new_path: vip.set(sk, {k : new_path}) # this is a le change, triggered from this bn action
        return new_path

    if k == 'FILE_PATH_session':
        new_path = _set_file_path('Session', "txt")
        if new_path:
            bn_load_session_to_vip(vip)
    elif k == 'DIR_PATH_results':
        _set_dir_path('Results')
    elif k in ['FILE_PATH_waveform_'+str(j) for j in range(4)]:
        _set_file_path('H3344_1', "csv")
    else:
        vip.GUI_feedback("!!! (bn_browse_for) A strange key was passed.")

    Dialog.close()
コード例 #2
0
ファイル: index.py プロジェクト: MarcialX/KID_Lab_kidpy_based
    def choosePath(self, flag):
        w = QWidget()
        w.resize(320, 240)
        w.setWindowTitle("Select directory where KID files are ")

        if flag == "firm":
            self.firmware = QFileDialog.getOpenFileName(
                self, "Select Directory")
            self.ui.firmEdit.setText(self.firmware)
            self.gc['FIRMWARE_FILE'] = self.firmware
        elif flag == "vnaPath":
            self.vna_savepath = QFileDialog.getOpenFileName(
                self, "Select Directory")
            self.ui.vnaEdit.setText(self.vna_savepath)
            self.gc['VNA_SAVEPATH'] = self.vna_savepath
        elif flag == "tarPath":
            self.targ_savepath = QFileDialog.getOpenFileName(
                self, "Select Directory")
            self.ui.tarEdit.setText(self.targ_savepath)
            self.gc['TARG_SAVEPATH'] = self.targ_savepath
        elif flag == "streamPath":
            self.dirfile_savepath = QFileDialog.getOpenFileName(
                self, "Select Directory")
            self.ui.streamEdit.setText(self.dirfile_savepath)
            self.gc['DIRFILE_SAVEPATH'] = self.dirfile_savepath
コード例 #3
0
    def __init__(self, module, parent=None):
        """Constructor."""
        super(QgisODKServices, self).__init__(parent)
        # Set up the user interface from Designer.
        # After setupUI you can access any designer object by doing
        # self.<objectname>, and you can use autoconnect slots - see
        # http://qt-project.org/doc/qt-4.8/designer-using-a-ui-file.html
        # #widgets-and-dialogs-with-auto-connect
        self.setupUi(self)
        self.module = module
        for numServices in range(1, len(self.services)):
            container = QWidget()
            container.resize(QSize(310, 260))
            self.tabServices.addTab(container, "")

        for tab, service in enumerate(self.services):
            container = self.tabServices.widget(tab)
            serviceClass = globals()[service]
            serviceClass(container)
            self.tabServices.setTabText(tab, service)

        S = QSettings()
        currentService = S.value("qgisodk/", defaultValue="0")
        self.tabServices.setCurrentIndex(int(currentService))
        self.attachmentsCheckBox.hide()

        self.buttonBox.accepted.connect(self.accept)
        self.buttonBox.rejected.connect(self.reject)
コード例 #4
0
    def showLegend(self, layer, field, setting_list):
        if not self.cellstyle:
            self.styleManager = QgsMapLayerStyleManager(layer)
            self.styleManager.addStyleFromLayer(u'默认')
            self.cellstyle = True

        ranges = []
        flabel = QLabel(field)
        fl = QHBoxLayout()
        fl.addWidget(flabel)
        self.vbox.addLayout(fl)
        for bl in setting_list:
            widget = QWidget(self)
            widget.setStyleSheet('QWidget {background-color:%s}' %
                                 bl[0].name())
            widget.resize(20, 20)
            label = QLabel(str(bl[1]) + u'—' + str(bl[2]))
            c = QHBoxLayout()
            c.addWidget(widget)
            c.addWidget(label)
            c.setStretchFactor(widget, 1)
            c.setStretchFactor(label, 3)
            self.vbox.addLayout(c)

            sym = QgsSymbolV2.defaultSymbol(layer.geometryType())
            sym.setColor(bl[0])
            rng = QgsRendererRangeV2(bl[1], bl[2], sym, label.text())
            ranges.append(rng)

        self.vbox.addStretch(1)
        self.setLayout(self.vbox)

        renderer = QgsGraduatedSymbolRendererV2(field, ranges)
        layer.setRendererV2(renderer)
        self.iface.actionDraw().trigger()
コード例 #5
0
ファイル: config_window.py プロジェクト: MarcialX/KID_Lab_app
    def choosePath(self, flag):
        w = QWidget()
        w.resize(320, 240)
        w.setWindowTitle("Select")

        if flag == "firm":
            firmwareDiry = QFileDialog.getExistingDirectory(
                self, "Select Folder")
            self.ui.diryFirmwareEdit.setText(firmwareDiry)
        elif flag == "firmFile":
            firmwareFile = QFileDialog.getOpenFileName(self, "Select File")
            self.ui.firmfileEdit.setText(firmwareFile)
        elif flag == "root":
            root = QFileDialog.getExistingDirectory(self, "Select Folder")
            self.ui.rootDiryEdit.setText(root)
        elif flag == "logg":
            logg = QFileDialog.getExistingDirectory(self, "Select Folder")
            self.ui.lggFilesEdit.setText(logg)
        elif flag == "pid":
            pid = QFileDialog.getExistingDirectory(self, "Select Folder")
            self.ui.diryPIDEdit.setText(pid)
        elif flag == "tonelist":
            self.tones = QFileDialog.getExistingDirectory(
                self, "Select Folder")
            self.ui.diryToneListEdit.setText(self.tones)
        elif flag == "tonesFile":
            TonesFile = QFileDialog.getOpenFileName(self, "Select File")
            self.ui.toneListFileEdit.setText(TonesFile)
        elif flag == "ram":
            self.ram = QFileDialog.getExistingDirectory(self, "Select Folder")
            self.ui.diryRamDiskEdit.setText(self.ram)
コード例 #6
0
ファイル: LoadingThread.py プロジェクト: dennisguse/VoIP.py
 def run(self):
     w = QWidget()
     w.resize(250, 150)
     w.move(300, 300)
     w.setWindowTitle('Simple')
     w.show()
     while(self.ready):
         time.sleep(0.1)
コード例 #7
0
ファイル: gui.py プロジェクト: robertbasic/ape
    def __init__(self, parent):
        parent.setWindowTitle("Create a new directory")
        parent.resize(400, 250)

        parent.setAttribute(Qt.WA_DeleteOnClose)

        descriptionLabel = QLabel(parent)
        descriptionLabel.setText("Enter the name for the new directory " \
                                    + "and choose a parent directory for it")

        newDirectoryLabel = QLabel(parent)
        newDirectoryLabel.setText("Name of the new directory")

        directoryLabel = QLabel(parent)
        directoryLabel.setText("Parent directory for the new directory")

        parent.newDirectoryInput = QLineEdit(parent)
        validator = QRegExpValidator(parent.newDirectoryInput)
        # altho a valid unix filename can contain anything but / and \0 (null)
        # this should be enough for every sane person
        pattern = QRegExp("[a-zA-Z0-9-_.]+")
        validator.setRegExp(pattern)
        parent.newDirectoryInput.setValidator(validator)

        parent.directoryInput = QLineEdit(parent.startDirectory, parent)
        parent.directoryInput.setReadOnly(True)

        browseButton = QPushButton("&Browse", parent)
        browseButton.clicked.connect(parent.browseDirectory)

        okButton = QPushButton("&Done", parent)
        okButton.clicked.connect(parent.createNewDirectory)

        cancelButton = QPushButton("&Cancel", parent)
        cancelButton.clicked.connect(parent.close)

        frame = QFrame(parent)
        frame.setFrameStyle(QFrame.HLine)
        frame.setFrameShadow(QFrame.Sunken)

        space = QWidget(parent)
        space.resize(400, 50)

        grid = QGridLayout(parent)
        grid.addWidget(descriptionLabel, 0, 0, 1, 3)
        grid.addWidget(newDirectoryLabel, 1, 0, 1, 3)
        grid.addWidget(parent.newDirectoryInput, 2, 0, 1, 3)
        grid.addWidget(directoryLabel, 3, 0, 1, 3)
        grid.addWidget(parent.directoryInput, 4, 0, 1, 2)
        grid.addWidget(browseButton, 4, 2, 1, 1)
        grid.addWidget(space, 5, 0, 1, 3)
        grid.addWidget(frame, 6, 0, 1, 3)
        grid.addWidget(cancelButton, 7, 0, 1, 1)
        grid.addWidget(okButton, 7, 2, 1, 1)
コード例 #8
0
ファイル: engine.py プロジェクト: patrickkidd/pksampler
def metronome():
    import os, sys, time
    from PyQt4.QtCore import SIGNAL
    from PyQt4.QtGui import QApplication, QPushButton, QSlider, QWidget
    from PyQt4.QtGui import QHBoxLayout
    import scsynth
    import synths
    
    app = QApplication(sys.argv)
    server = scsynth.server.start(verbose=True)
    #server = scsynth.server.connect()
    engine = Engine(server, app)
    server.sendMsg('/dumpOSC', 1)
    engine.tempoclock.set_tempo(120)

    SYNTHDEF_PATH = os.path.join(os.path.expanduser('~'),
                                 '.pksampler', 'synthdefs')
    SYNTHDEFS = ('JASStereoSamplePlayer.scsyndef',
                 'JASSine.scsyndef',
                 )
    for fname in SYNTHDEFS:
        engine.server.sendMsg('/d_load', os.path.join(SYNTHDEF_PATH, fname))
    
    CLICK = '/Users/patrick/.pksampler/clicks/click_1.wav'
    engine.loader.load(CLICK)
    time.sleep(.1)

    notes = [scsynth.Note(i, i+16, 69) for i in (0, )]
    pattern = scsynth.Pattern(notes)
    pattern.beats = 1
    stream = engine.register(synths.Sine(), pattern)
    stream.loop(True)
    engine.start()

    widget = QWidget()
    Layout = QHBoxLayout(widget)
    widget.resize(100, 250)
    widget.show()
    
    def set_tempo(value):
        engine.tempoclock.set_tempo(value)
    slider = QSlider(widget)
    slider.setRange(100, 180)
    slider.setValue(140)
    QObject.connect(slider, SIGNAL('valueChanged(int)'), set_tempo)
    Layout.addWidget(slider)

    button = QPushButton('quit', widget)
    QObject.connect(button, SIGNAL('clicked()'), app.quit)
    Layout.addWidget(button)
    
    app.exec_()
    engine.stop()
コード例 #9
0
    def create_crop_tab(self, crop_params):
        # create crop tab widget & layout
        crop_tab_widget = QWidget(self.crop_tabs_widget)
        crop_tab_widget.setSizePolicy(QSizePolicy.Expanding,
                                      QSizePolicy.Expanding)
        crop_tab_widget.resize(276, 300)

        crop_tab_layout = QVBoxLayout(crop_tab_widget)

        # add to list of crop widgets & layouts
        self.crop_tab_layouts.append(crop_tab_layout)
        self.crop_tab_widgets.append(crop_tab_widget)

        # create form layout
        self.form_layout = QFormLayout()
        self.form_layout.setFieldGrowthPolicy(
            QFormLayout.AllNonFixedFieldsGrow)
        crop_tab_layout.addLayout(self.form_layout)

        # add dict for storing param controls for this crop
        self.crop_param_controls.append({})

        # add param controls
        self.create_param_controls(crop_params)

        # create crop button layout
        crop_button_layout = QHBoxLayout()
        crop_button_layout.setSpacing(5)
        crop_button_layout.addStretch(1)
        crop_tab_layout.addLayout(crop_button_layout)

        # add crop buttons
        self.reset_crop_button = QPushButton(u'\u25A8 Reset Crop', self)
        self.reset_crop_button.setMaximumWidth(110)
        self.reset_crop_button.clicked.connect(self.controller.reset_crop)
        crop_button_layout.addWidget(self.reset_crop_button)

        self.select_crop_button = QPushButton(u'\u25A3 Select Crop', self)
        self.select_crop_button.setMaximumWidth(110)
        self.select_crop_button.clicked.connect(self.controller.select_crop)
        crop_button_layout.addWidget(self.select_crop_button)

        # add crop widget as a tab
        self.crop_tabs_widget.addTab(crop_tab_widget,
                                     str(self.controller.current_crop))

        # make this crop the active tab
        self.crop_tabs_widget.setCurrentIndex(self.controller.current_crop)

        # update text on all tabs
        for i in range(len(self.controller.params['crop_params'])):
            self.crop_tabs_widget.setTabText(i, str(i))
コード例 #10
0
    def __init__(self, parent: QtGui.QWidget, uiPyModule, className: str = "Ui_Widget"):
        """
        'parent' - common widget for all device types,
        'uiPyModule' - generated from Widget.ui py-module.  
        """
        QtGui.QFrame.__init__(self)

        self.ui = uiPyModule.__dict__[className]()
        self.ui.setupUi(self)
        self.setParent(parent)

        if parent:
            parent.setMinimumHeight(parent.minimumHeight() + self.minimumHeight())
            parent.resize(parent.width(), parent.minimumHeight())
コード例 #11
0
 def draw_image(self):
     data = urllib.request.urlopen(self.url).read()
     image = QtGui.QImage()
     image.loadFromData(data)
     
     app = QApplication(sys.argv)
     w = QWidget()
     w.setWindowTitle('Pokemon')
     
     label = QLabel(w)
     pixmap = QPixmap(image)
     label.setPixmap(pixmap)
     w.resize(pixmap.width(), pixmap.height())
     
     w.show()
     app.exec_()
コード例 #12
0
    def setupUI(self):
        window = QWidget()
        window.setWindowTitle('Run script')
        window.resize(550, 300)
        window_layout = QGridLayout()
        window.setLayout(window_layout)

        btn_load = QPushButton("Load file")
        lbl_loaded = QLabel("Nothing loaded...")
        window_layout.addWidget(btn_load, 0, 0)
        window_layout.addWidget(lbl_loaded, 0, 1)

        self.script_textBox = TextBox()
        window_layout.addWidget(self.script_textBox, 1, 0, 1, 0)
        self.highlight = PythonHighlighter(self.script_textBox.document())

        btn_att = QPushButton("Attack!")
        window_layout.addWidget(btn_att, 2, 0)

        @pyqtSlot()
        def on_click():
            self.attack_file = QFileDialog.getOpenFileName(
                window, 'Open file', '', "")

            if self.attack_file != "":
                path = self.attack_file.rfind('/')
                self.attack_file = self.attack_file[path + 1:]
                lbl_loaded.setText(self.attack_file)
                self.script_textBox.setText("")

                with open(self.attack_file) as f:
                    for line in f.readlines():
                        self.script_textBox.appendText(line)

                self.script_textBox.updateText()

        btn_load.clicked.connect(on_click)

        @pyqtSlot()
        def on_click():
            self.attack()

        btn_att.clicked.connect(on_click)

        return window
コード例 #13
0
    def setupUI(self):
        window = QWidget()
        window.setWindowTitle('Denial of Service configuration')
        window.resize(300, 180)
        window_layout = QGridLayout()
        window.setLayout(window_layout)

        lbl_target = QLabel("Target IP: ")
        txt_target = QLineEdit()
        window_layout.addWidget(lbl_target, 0, 0)
        window_layout.addWidget(txt_target, 0, 1)

        lbl_source = QLabel("Source IP: ")
        txt_source = QLineEdit()
        window_layout.addWidget(lbl_source, 1, 0)
        window_layout.addWidget(txt_source, 1, 1)

        lbl_iface = QLabel("Net. Interface: ")
        ifaces = netifaces.interfaces()
        cb_iface = QComboBox()
        cb_iface.addItems(ifaces)
        window_layout.addWidget(lbl_iface, 2, 0)
        window_layout.addWidget(cb_iface, 2, 1)

        lbl_number = QLabel("Number of packets: ")
        txt_number = QLineEdit()
        window_layout.addWidget(lbl_number, 3, 0)
        window_layout.addWidget(txt_number, 3, 1)

        btn_att = QPushButton("Attack!")
        window_layout.addWidget(btn_att, 5, 0)

        @pyqtSlot()
        def on_click():
            self.log_textBox.appendText(
                "Denial of Service attack starting...\n")
            self.setTarget(cb_iface.currentText(), txt_target.text(),
                           txt_source.text(), txt_number.text())
            #self.setTarget("", "192.168.122.95", "192.168.122.142", 10)
            window.close()
            self.attack()

        btn_att.clicked.connect(on_click)

        return window
コード例 #14
0
ファイル: main.py プロジェクト: jordiandreu/snippets
def show():
    """
    Simple function to show how to load an image from a resource file and
    add it to a widget.
    @return:
    """
    # Create window
    app = QApplication(sys.argv)
    w = QWidget()
    w.setWindowTitle("PyQT4")
    # Create widget
    label = QLabel(w)
    image = resource_filename(Requirement.parse("setuptools_resource_example_pkg"), "mypkg/resources/alba-logo.png")
    pixmap = QPixmap(image)
    label.setPixmap(pixmap)
    w.resize(pixmap.width(), pixmap.height())
    # Draw window
    w.show()
    sys.exit(app.exec_())
コード例 #15
0
ファイル: main.py プロジェクト: jordiandreu/snippets
def show():
    """
    Simple function to show how to load an image from a resource file and
    add it to a widget.
    @return:
    """
    # Create window
    app = QApplication(sys.argv)
    w = QWidget()
    w.setWindowTitle("PyQT4")
    # Create widget
    label = QLabel(w)
    image = ':/alba-logo.png'
    pixmap = QPixmap(image)
    label.setPixmap(pixmap)
    w.resize(pixmap.width(), pixmap.height())
    # Draw window
    w.show()
    sys.exit(app.exec_())
コード例 #16
0
    def initUI(self):
        self.setWindowTitle(u"模三分析")
        self.setWindowFlags(Qt.WindowStaysOnTopHint)
        self.setWindowFlags(Qt.WindowMinimizeButtonHint)

        widget_0 = QWidget()
        widget_0.setStyleSheet('QWidget {background-color: red}')
        widget_0.resize(20, 20)
        label_0 = QLabel("0")

        widget_1 = QWidget()
        widget_1.setStyleSheet('QWidget {background-color: yellow}')
        widget_1.resize(20, 20)
        label_1 = QLabel("1")

        widget_2 = QWidget()
        widget_2.setStyleSheet('QWidget {background-color: #47d54c}')
        widget_2.resize(20, 20)
        label_2 = QLabel("2")

        grid = QGridLayout()
        grid.setSpacing(20)
        grid.addWidget(widget_0, 0, 0)
        grid.addWidget(label_0, 0, 1)
        grid.addWidget(widget_1, 1, 0)
        grid.addWidget(label_1, 1, 1)
        grid.addWidget(widget_2, 2, 0)
        grid.addWidget(label_2, 2, 1)


        self.setLayout(grid)
        self.setGeometry(300, 300, 250, 200)
コード例 #17
0
class DeviceOrderWidget(QWidget):
    def __init__(self, parent=None):
        QWidget.__init__(self, parent)
        self.section = None
        self.deviceWidgets = list()
        self.setMinimumWidth(520)
        self.setMinimumHeight(600)
        self.iconAssigner = IconAssigner()

        self.setupLayout()
        self.setupScrollArea()

        # self.addNewDeviceWidget(device = Device("ABC", None, None))
        # self.addNewDeviceWidget(device = Device("XD", None, None))
        # self.addNewDeviceWidget(device = Device("1313XD", None, None))
        # self.addNewDeviceWidget(device = Device(":-(", None, None))

    def setupLayout(self):
        self.containerWidget = QWidget(self)
        self.widgetHeight = 0
        self.containerWidget.setGeometry(QRect(0,0,451,self.widgetHeight))

        self.layout = QVBoxLayout()
        self.containerWidget.setLayout(self.layout)

    def setupScrollArea(self):
        self.scrollArea = QScrollArea(self)
        self.scrollArea.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAsNeeded)
        self.scrollArea.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff)
        self.scrollArea.setMaximumWidth(530)
        self.scrollArea.setMinimumHeight(600)
        self.scrollArea.setWidgetResizable(False)
        self.scrollArea.setWidget(self.containerWidget)

    def setSection(self, section):
        self.section = section
        devices = section.devices
        devices = sorted(devices, key=lambda device: device.getShortName())
        for device in devices:
            self.addNewDeviceWidget(device)

    def addNewDeviceWidget(self, device=None):
        newWidget = DeviceWidget(self, device = device)
        newWidget.position = len(self.deviceWidgets)

        iconPath = self.iconAssigner.getIconPath(device)
        newWidget.deviceIcon.setIcon(iconPath)

        self.deviceWidgets.append(newWidget)
        self.layout.addWidget(newWidget)

        self.widgetHeight += 70
        self.containerWidget.resize(530, self.widgetHeight)

        self.connect(newWidget, QtCore.SIGNAL("up()"), self.upWidget)
        self.connect(newWidget, QtCore.SIGNAL("down()"), self.downWidget)

    def upWidget(self):
        widget = self.sender()
        if widget.position > 0:
            self.swap(widget.position, widget.position-1)

    def downWidget(self):
        widget = self.sender()
        if widget.position < len(self.deviceWidgets)-1:
            self.swap(widget.position, widget.position+1)

    def swap(self, first, second):
        firstWidget = self.deviceWidgets[first]
        secondWidget = self.deviceWidgets[second]

        firstWidget.position = second
        secondWidget.position = first

        self.layout.removeWidget(firstWidget)
        self.layout.removeWidget(secondWidget)
        self.deviceWidgets.remove(firstWidget)
        self.deviceWidgets.remove(secondWidget)
        if first > second:
            self.layout.insertWidget(second, firstWidget)
            self.layout.insertWidget(first, secondWidget)
            self.deviceWidgets.insert(second, firstWidget)
            self.deviceWidgets.insert(first, secondWidget)
        else:
            self.layout.insertWidget(first, secondWidget)
            self.layout.insertWidget(second, firstWidget)
            self.deviceWidgets.insert(first, secondWidget)
            self.deviceWidgets.insert(second, firstWidget)

    def getSortedDevices(self):
        devices = list()
        for deviceWidget in self.deviceWidgets:
            devices.append(deviceWidget.device)
        return devices
コード例 #18
0
ファイル: manbal.py プロジェクト: JohnDMcMaster/uvscada
class TestGUI(QMainWindow):
    def __init__(self):
        QMainWindow.__init__(self)
        self.showMaximized()

        self.initUI()

        self.vid_fd = None

        # Must not be initialized until after layout is set
        self.gstWindowId = None
        engine_config = 'gstreamer'
        engine_config = 'gstreamer-testsrc'
        if engine_config == 'gstreamer':
            self.source = gst.element_factory_make("v4l2src", "vsource")
            self.source.set_property("device", "/dev/video0")
            self.vid_fd = -1
            self.setupGst()
        elif engine_config == 'gstreamer-testsrc':
            print 'WARNING: using test source'
            self.source = gst.element_factory_make("videotestsrc", "video-source")
            self.setupGst()
        else:
            raise Exception('Unknown engine %s' % (engine_config,))

        self.processor = ImageProcessor()
        self.processor.n_frames.connect(self.n_frames.setNum)
        self.processor.r_val.connect(self.r_val.setNum)
        self.processor.g_val.connect(self.g_val.setNum)
        self.processor.b_val.connect(self.b_val.setNum)
        self.processor.r_bal.connect(self.r_bal.setNum)
        self.processor.b_bal.connect(self.b_bal.setNum)
        self.capture_sink.img_cb = self.processor.img_cb

        self.processor.start()

        if self.gstWindowId:
            print "Starting gstreamer pipeline"
            self.player.set_state(gst.STATE_PLAYING)

    def awb(self):
        # makes one step for now

        # note
        # rb is out of 1000
        # actual is out of 1024

        rv = int(self.r_val.text())
        gv = int(self.g_val.text())
        bv = int(self.b_val.text())

        rb = int(self.r_bal.text())
        bb = int(self.b_bal.text())

        # Using hacked driver where these are set directly
        setg = int(self.ctrls["Gain"].text())
        setr = int(self.ctrls["Red Balance"].text())
        setb = int(self.ctrls["Blue Balance"].text())


        # make a linear guess based on the difference
        # it might under or overshoot, but should converge in time
        limit = lambda x: max(min(int(x), 1023), 0)
        sf = 0.2
        rb_new = limit(setr - rb * sf)
        bb_new = limit(setb - bb * sf)
        print 'Step'
        print '  R: %d w/ %d => %d' % (setr, rb, rb_new)
        print '  B: %d w/ %d => %d' % (setb, bb, bb_new)

        #ctrl_set(self.vid_fd, "Red Balance", rb_new)
        self.ctrls["Red Balance"].setText(str(rb_new))

        #ctrl_set(self.vid_fd, "Blue Balance", bb_new)
        self.ctrls["Blue Balance"].setText(str(bb_new))

    def get_video_layout(self):
        # Overview
        def low_res_layout():
            layout = QVBoxLayout()
            layout.addWidget(QLabel("Overview"))

            # Raw X-windows canvas
            self.video_container = QWidget()
            # Allows for convenient keyboard control by clicking on the video
            self.video_container.setFocusPolicy(Qt.ClickFocus)
            w, h = 3264/4, 2448/4
            self.video_container.setMinimumSize(w, h)
            self.video_container.resize(w, h)
            policy = QSizePolicy(QSizePolicy.Fixed, QSizePolicy.Fixed)
            self.video_container.setSizePolicy(policy)

            layout.addWidget(self.video_container)

            return layout

        self.awb_pb = QPushButton("AWG (G, E fixed)")
        self.awb_pb.clicked.connect(self.awb)

        layout = QHBoxLayout()
        layout.addLayout(low_res_layout())
        layout.addWidget(self.awb_pb)
        return layout

    def get_ctrl_layout(self):

        layout = QGridLayout()
        row = 0

        self.ctrls = {}
        for name in ("Red Balance", "Gain", "Blue Balance", "Exposure"):
            def textChanged(name):
                def f():
                    if self.vid_fd >= 0:
                        try:
                            val = int(self.ctrls[name].text())
                        except ValueError:
                            pass
                        else:
                            print '%s changed => %d' % (name, val)
                            ctrl_set(self.vid_fd, name, val)
                return f

            layout.addWidget(QLabel(name), row, 0)
            ctrl = QLineEdit('0')
            ctrl.textChanged.connect(textChanged(name))
            self.ctrls[name] = ctrl
            layout.addWidget(ctrl, row, 1)
            row += 1

        return layout

    def get_rgb_layout(self):

        layout = QGridLayout()
        row = 0

        layout.addWidget(QLabel('N'), row, 0)
        self.n_frames = QLabel('0')
        layout.addWidget(self.n_frames, row, 1)
        row += 1

        layout.addWidget(QLabel('R_V'), row, 0)
        self.r_val = QLabel('0')
        layout.addWidget(self.r_val, row, 1)
        row += 1

        layout.addWidget(QLabel('G_V'), row, 0)
        self.g_val = QLabel('0')
        layout.addWidget(self.g_val, row, 1)
        row += 1

        layout.addWidget(QLabel('B_V'), row, 0)
        self.b_val = QLabel('0')
        layout.addWidget(self.b_val, row, 1)
        row += 1

        layout.addWidget(QLabel('R_B'), row, 0)
        self.r_bal = QLabel('0')
        layout.addWidget(self.r_bal, row, 1)
        row += 1

        layout.addWidget(QLabel('B_B'), row, 0)
        self.b_bal = QLabel('0')
        layout.addWidget(self.b_bal, row, 1)
        row += 1

        return layout

    def setupGst(self):
        print "Setting up gstreamer pipeline"
        self.gstWindowId = self.video_container.winId()

        self.player = gst.Pipeline("player")
        self.tee = gst.element_factory_make("tee")
        sinkx = gst.element_factory_make("ximagesink", 'sinkx_overview')
        fcs = gst.element_factory_make('ffmpegcolorspace')
        caps = gst.caps_from_string('video/x-raw-yuv')
        self.capture_enc = gst.element_factory_make("jpegenc")
        self.capture_sink = gst.element_factory_make("capturesink")
        self.capture_sink_queue = gst.element_factory_make("queue")
        self.resizer =  gst.element_factory_make("videoscale")

        # Video render stream
        self.player.add(      self.source, self.tee)
        gst.element_link_many(self.source, self.tee)

        self.player.add(fcs,                 self.resizer, sinkx)
        gst.element_link_many(self.tee, fcs, self.resizer, sinkx)

        self.player.add(                self.capture_sink_queue, self.capture_enc, self.capture_sink)
        gst.element_link_many(self.tee, self.capture_sink_queue, self.capture_enc, self.capture_sink)

        bus = self.player.get_bus()
        bus.add_signal_watch()
        bus.enable_sync_message_emission()
        bus.connect("message", self.on_message)
        bus.connect("sync-message::element", self.on_sync_message)

    def on_message(self, bus, message):
        t = message.type

        if self.vid_fd is not None and self.vid_fd < 0:
            self.vid_fd = self.source.get_property("device-fd")
            if self.vid_fd >= 0:
                print 'Initializing V4L controls'
                self.v4l_load()

        if t == gst.MESSAGE_EOS:
            self.player.set_state(gst.STATE_NULL)
            print "End of stream"
        elif t == gst.MESSAGE_ERROR:
            err, debug = message.parse_error()
            print "Error: %s" % err, debug
            self.player.set_state(gst.STATE_NULL)
            ''

    def v4l_load(self):
        vconfig = uconfig["imager"].get("v4l2", None)
        if not vconfig:
            return
        for configk, configv in vconfig.iteritems():
            break
        #if type(configv) != dict or '"Gain"' not in configv:
        #    raise Exception("Bad v4l default config (old style?)")

        print 'Selected config %s' % configk
        for k, v in configv.iteritems():
            if k in self.ctrls:
                self.ctrls[k].setText(str(v))
            else:
                ctrl_set(self.vid_fd, k, v)

    def on_sync_message(self, bus, message):
        if message.structure is None:
            return
        message_name = message.structure.get_name()
        if message_name == "prepare-xwindow-id":
            if message.src.get_name() == 'sinkx_overview':
                print 'sinkx_overview win_id'
                win_id = self.gstWindowId
            else:
                raise Exception('oh noes')

            assert win_id
            imagesink = message.src
            imagesink.set_xwindow_id(win_id)

    def initUI(self):
        self.setGeometry(300, 300, 250, 150)
        self.setWindowTitle('pyv4l test')

        # top layout
        layout = QHBoxLayout()

        layout.addLayout(self.get_ctrl_layout())
        layout.addLayout(self.get_rgb_layout())
        layout.addLayout(self.get_video_layout())

        w = QWidget()
        w.setLayout(layout)
        self.setCentralWidget(w)
        self.show()
コード例 #19
0
ファイル: fsbrowser_test.py プロジェクト: mjirik/io3d
    def test_devel_qt_dialog_fsbrowser(self):
        import PyQt4
        import sys
        from PyQt4.QtGui import QApplication, QWidget, QLineEdit, QPushButton, QImage, QPixmap, QLabel
        import matplotlib.pyplot as plt

        # Create an PyQT4 application object.
        a = QApplication(sys.argv)

        # The QWidget widget is the base class of all user interface objects in PyQt4.
        w = QWidget()

        # Set window size.
        w.resize(320, 240)

        # Set window title
        w.setWindowTitle("Hello World!")

        # Get filename using QFileDialog
        # filename = QFileDialog.getOpenFileName(w, 'Open File', '/')
        # print(filename)

        qfd = QFileDialog(None)

        lineedit = QLineEdit(qfd)
        # Create a button in the window
        button = QPushButton('Click me', qfd)


        # Image
        image = io3d.datasets.generate_face([1, 100, 100]).squeeze()

        cmap = np.uint8(np.round(255 * plt.get_cmap('magma')(np.arange(256))))
        image /= image.max()
        image = np.minimum(image, 1.0)
        image = np.round(255 * image).astype('uint8')
        Y, X = image.shape
        self._bgra = np.zeros((Y, X, 4), dtype=np.uint8, order='C')
        self._bgra[..., 0] = cmap[:, 2][image]
        self._bgra[..., 1] = cmap[:, 1][image]
        self._bgra[..., 2] = cmap[:, 0][image]
        qimage = QImage(self._bgra.data, X, Y, QImage.Format_RGB32)

        pixmap = QPixmap.fromImage(qimage)

        label = QLabel(w)
        # pixmap = QPixmap(os.getcwd() + 'https://pythonspot-9329.kxcdn.com/logo.png')
        label.setPixmap(pixmap)
        w.resize(pixmap.width(), pixmap.height())
        # success = img.loadFromData(image_data)
        # painter = QPainter(img)
        layout = qfd.layout()

        layout.addWidget(lineedit)
        layout.addWidget(button, 2, 5)
        layout.addWidget(label, 1, 5)

        if qfd.exec_():
            print(qfd.selectedFiles())
        else:
            print("Cancel")
コード例 #20
0
class BillboardDisplay(QMainWindow):
    def __init__(self, parent=None, workdir=None, fontsize=42):
        super(BillboardDisplay, self).__init__(parent)
        self.workdir = workdir
        self.logger = logging.getLogger('display')
        self.logger.info('Working directory: {}'.format(self.workdir))
        self.current_display = os.path.join(self.workdir, 'current.jpg')
        desktop = QDesktopWidget()
        self.display = QWidget(self)
        size = desktop.availableGeometry(desktop.primaryScreen())
        self.display.resize(size.width(), size.height())
        self.display.setWindowTitle("Billboard")

        self.image_label = QLabel(self.display)
        self.image_label.resize(size.width(), size.height())

        self.text_label = QLabel(self.display)
        self.text_label.resize(size.width(), size.height())
        self.text_label.setMargin(100)
        self.text_label.setStyleSheet('''
            QLabel {{
                        font-size: {}pt;
                        font-weight: bold;
                        color: #eeeeee;
                        text-align: center;
                    }}
        '''.format(fontsize))
        self.text_label.setWordWrap(True)
        self.text_label.setAlignment(Qt.AlignCenter)

        dse = QGraphicsDropShadowEffect()
        dse.setBlurRadius(0)
        dse.setXOffset(5)
        dse.setYOffset(5)
        dse.setColor(QColor(0, 0, 0, 255))
        self.text_label.setGraphicsEffect(dse)
        QObject.connect(self, SIGNAL("updateimage"), self.display_image)
        QObject.connect(self, SIGNAL("updatecurrent"), self.take_screenshot)

    def update_image(self, imagepath):
        self.emit(SIGNAL("updateimage"), imagepath)

    def update_current(self):
        self.emit(SIGNAL("updatecurrent"), self.current_display)

    def display(self, imagepath, text):
        self.display_text(text)
        self.display_image(imagepath)
        self.showFullScreen()

    def display_image(self, imagepath):
        pix = QPixmap(imagepath)
        self.image_label.setPixmap(
            pix.scaled(self.display.size(), Qt.KeepAspectRatioByExpanding))

    def display_text(self, text):
        self.text_label.setText('"{}"'.format(text))

    def take_screenshot(self, path):
        pixmap = QPixmap(QPixmap.grabWidget(self.display))
        pixmap.save(path)
        self.logger.debug('Saving {}'.format(path))
コード例 #21
0
ファイル: TransTES.py プロジェクト: averrin/Skywind_Installer
    def __init__(self):
        QMainWindow.__init__(self)
        self.setWindowTitle(u"TransTES Hub" if not DEBUG else 'TransTES [DEBUG]')
        self.setWindowIcon(QIcon('icons/app.png'))

        panel = QWidget()
        panel.setLayout(QHBoxLayout())
        self.setCentralWidget(panel)

        games_panel = QWidget()
        games_panel.setLayout(QVBoxLayout())
        # self.setCentralWidget(games_panel)

        games_panel.resize(500, 100)

        is_skywind = os.path.isfile('config/Skywind.yml')
        is_skyblivion = os.path.isfile('config/Skyblivion.yml')

        self.Skyrim = GameInfoPanel('Skyrim', force_browse=True)

        if is_skywind:
            self.Morrowind = GameInfoPanel('Morrowind')
            games_panel.layout().addWidget(self.Morrowind)
            self.Skywind = ModInfoPanel('Skywind', self.Skyrim, self.Morrowind)

        if is_skyblivion:
            self.Oblivion = GameInfoPanel('Oblivion')
            games_panel.layout().addWidget(self.Oblivion)
            self.Skyblivion = ModInfoPanel('Skyblivion', self.Skyrim, self.Oblivion)

        games_panel.layout().addWidget(self.Skyrim)

        games_panel.layout().addWidget(QLabel('<hr>'))
        if is_skywind:
            games_panel.layout().addWidget(self.Skywind)

        if is_skyblivion:
            games_panel.layout().addWidget(self.Skyblivion)

        buttons = QWidget()
        buttons.setLayout(QHBoxLayout())

        games_panel.layout().setAlignment(Qt.AlignTop)

        panel.layout().addWidget(games_panel)

        self.statusBar = QStatusBar(self)
        self.statusBar.addPermanentWidget(QWidget().setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding))
        self.setStatusBar(self.statusBar)
        self.statusBar.addPermanentWidget(
            QLabel(u'by <b>Averrin</b> for <b>Skywind Project</b>. Version: %s  ' % __version__)
        )
        self.statusBar.setSizeGripEnabled(False)

        self.sideBar = SideBar(self)

        self.sizeHint = QSize(500, 100)

        self.dm = DM()
        # self.dm.onShow = lambda: self.setMaximumWidth(games_panel.width())
        self.readme = Browser()
        # self.readme.onShow = lambda: self.setMaximumWidth(games_panel.width())
        readme = self.createSBAction(QIcon(icons_folder + 'readme.png'), 'Readme', self.readme, toolbar=True,
                                     widgetWidth=700, titleWidget=self.readme.toolbar)
        readme.showWidget()
        self.createSBAction(QIcon(icons_folder + 'dm.png'),
                            'Downloads', self.dm, toolbar=True,
                            titleWidget=self.dm.toolbar)
コード例 #22
0
ファイル: manbal.py プロジェクト: jshafer817/uvscada
class CNCGUI(QMainWindow):
    def __init__(self):
        QMainWindow.__init__(self)
        self.showMaximized()

        self.initUI()

        self.vid_fd = None

        # Must not be initialized until after layout is set
        self.gstWindowId = None
        engine_config = 'gstreamer'
        if engine_config == 'gstreamer':
            self.source = gst.element_factory_make("v4l2src", "vsource")
            self.source.set_property("device", "/dev/video0")
            self.vid_fd = -1
            self.setupGst()
        elif engine_config == 'gstreamer-testsrc':
            self.source = gst.element_factory_make("videotestsrc",
                                                   "video-source")
            self.setupGst()
        else:
            raise Exception('Unknown engine %s' % (engine_config, ))

        self.processor = ImageProcessor()
        self.processor.n_frames.connect(self.n_frames.setNum)
        self.processor.r_val.connect(self.r_val.setNum)
        self.processor.g_val.connect(self.g_val.setNum)
        self.processor.b_val.connect(self.b_val.setNum)
        self.processor.r_bal.connect(self.r_bal.setNum)
        self.processor.b_bal.connect(self.b_bal.setNum)
        self.capture_sink.img_cb = self.processor.img_cb

        self.processor.start()

        if self.gstWindowId:
            print "Starting gstreamer pipeline"
            self.player.set_state(gst.STATE_PLAYING)

    def awb(self):
        # makes one step for now

        # note
        # rb is out of 1000
        # actual is out of 1024

        rv = int(self.r_val.text())
        gv = int(self.g_val.text())
        bv = int(self.b_val.text())

        rb = int(self.r_bal.text())
        bb = int(self.b_bal.text())

        # Using hacked driver where these are set directly
        setg = int(self.ctrls["Gain"].text())
        setr = int(self.ctrls["Red Balance"].text())
        setb = int(self.ctrls["Blue Balance"].text())

        # make a linear guess based on the difference
        # it might under or overshoot, but should converge in time
        limit = lambda x: max(min(int(x), 1023), 0)
        sf = 0.2
        rb_new = limit(setr - rb * sf)
        bb_new = limit(setb - bb * sf)
        print 'Step'
        print '  R: %d w/ %d => %d' % (setr, rb, rb_new)
        print '  B: %d w/ %d => %d' % (setb, bb, bb_new)

        #ctrl_set(self.vid_fd, "Red Balance", rb_new)
        self.ctrls["Red Balance"].setText(str(rb_new))

        #ctrl_set(self.vid_fd, "Blue Balance", bb_new)
        self.ctrls["Blue Balance"].setText(str(bb_new))

    def get_video_layout(self):
        # Overview
        def low_res_layout():
            layout = QVBoxLayout()
            layout.addWidget(QLabel("Overview"))

            # Raw X-windows canvas
            self.video_container = QWidget()
            # Allows for convenient keyboard control by clicking on the video
            self.video_container.setFocusPolicy(Qt.ClickFocus)
            w, h = 3264 / 4, 2448 / 4
            self.video_container.setMinimumSize(w, h)
            self.video_container.resize(w, h)
            policy = QSizePolicy(QSizePolicy.Fixed, QSizePolicy.Fixed)
            self.video_container.setSizePolicy(policy)

            layout.addWidget(self.video_container)

            return layout

        self.awb_pb = QPushButton("AWG (G, E fixed)")
        self.awb_pb.clicked.connect(self.awb)

        layout = QHBoxLayout()
        layout.addLayout(low_res_layout())
        layout.addWidget(self.awb_pb)
        return layout

    def get_ctrl_layout(self):

        layout = QGridLayout()
        row = 0

        self.ctrls = {}
        for name in ("Red Balance", "Gain", "Blue Balance", "Exposure"):

            def textChanged(name):
                def f():
                    if self.vid_fd >= 0:
                        try:
                            val = int(self.ctrls[name].text())
                        except ValueError:
                            pass
                        else:
                            print '%s changed => %d' % (name, val)
                            ctrl_set(self.vid_fd, name, val)

                return f

            layout.addWidget(QLabel(name), row, 0)
            ctrl = QLineEdit('0')
            ctrl.textChanged.connect(textChanged(name))
            self.ctrls[name] = ctrl
            layout.addWidget(ctrl, row, 1)
            row += 1

        return layout

    def get_rgb_layout(self):

        layout = QGridLayout()
        row = 0

        layout.addWidget(QLabel('N'), row, 0)
        self.n_frames = QLabel('0')
        layout.addWidget(self.n_frames, row, 1)
        row += 1

        layout.addWidget(QLabel('R_V'), row, 0)
        self.r_val = QLabel('0')
        layout.addWidget(self.r_val, row, 1)
        row += 1

        layout.addWidget(QLabel('G_V'), row, 0)
        self.g_val = QLabel('0')
        layout.addWidget(self.g_val, row, 1)
        row += 1

        layout.addWidget(QLabel('B_V'), row, 0)
        self.b_val = QLabel('0')
        layout.addWidget(self.b_val, row, 1)
        row += 1

        layout.addWidget(QLabel('R_B'), row, 0)
        self.r_bal = QLabel('0')
        layout.addWidget(self.r_bal, row, 1)
        row += 1

        layout.addWidget(QLabel('B_B'), row, 0)
        self.b_bal = QLabel('0')
        layout.addWidget(self.b_bal, row, 1)
        row += 1

        return layout

    def setupGst(self):
        print "Setting up gstreamer pipeline"
        self.gstWindowId = self.video_container.winId()

        self.player = gst.Pipeline("player")
        self.tee = gst.element_factory_make("tee")
        sinkx = gst.element_factory_make("ximagesink", 'sinkx_overview')
        fcs = gst.element_factory_make('ffmpegcolorspace')
        caps = gst.caps_from_string('video/x-raw-yuv')
        self.capture_enc = gst.element_factory_make("jpegenc")
        self.capture_sink = gst.element_factory_make("capturesink")
        self.capture_sink_queue = gst.element_factory_make("queue")
        self.resizer = gst.element_factory_make("videoscale")

        # Video render stream
        self.player.add(self.source, self.tee)
        gst.element_link_many(self.source, self.tee)

        self.player.add(fcs, self.resizer, sinkx)
        gst.element_link_many(self.tee, fcs, self.resizer, sinkx)

        self.player.add(self.capture_sink_queue, self.capture_enc,
                        self.capture_sink)
        gst.element_link_many(self.tee, self.capture_sink_queue,
                              self.capture_enc, self.capture_sink)

        bus = self.player.get_bus()
        bus.add_signal_watch()
        bus.enable_sync_message_emission()
        bus.connect("message", self.on_message)
        bus.connect("sync-message::element", self.on_sync_message)

    def on_message(self, bus, message):
        t = message.type

        if self.vid_fd is not None and self.vid_fd < 0:
            self.vid_fd = self.source.get_property("device-fd")
            if self.vid_fd >= 0:
                print 'Initializing V4L controls'
                for k, v in uconfig["imager"].get("v4l2", {}).iteritems():
                    if k in self.ctrls:
                        self.ctrls[k].setText(str(v))
                    else:
                        ctrl_set(self.vid_fd, k, v)

        if t == gst.MESSAGE_EOS:
            self.player.set_state(gst.STATE_NULL)
            print "End of stream"
        elif t == gst.MESSAGE_ERROR:
            err, debug = message.parse_error()
            print "Error: %s" % err, debug
            self.player.set_state(gst.STATE_NULL)
            ''

    def on_sync_message(self, bus, message):
        if message.structure is None:
            return
        message_name = message.structure.get_name()
        if message_name == "prepare-xwindow-id":
            if message.src.get_name() == 'sinkx_overview':
                print 'sinkx_overview win_id'
                win_id = self.gstWindowId
            else:
                raise Exception('oh noes')

            assert win_id
            imagesink = message.src
            imagesink.set_xwindow_id(win_id)

    def initUI(self):
        self.setGeometry(300, 300, 250, 150)
        self.setWindowTitle('pyv4l test')

        # top layout
        layout = QHBoxLayout()

        layout.addLayout(self.get_ctrl_layout())
        layout.addLayout(self.get_rgb_layout())
        layout.addLayout(self.get_video_layout())

        w = QWidget()
        w.setLayout(layout)
        self.setCentralWidget(w)
        self.show()
コード例 #23
0
ファイル: pyTorrentBrowser.py プロジェクト: gpgomes/pyTorrent
if __name__ == "__main__":
    app = QApplication(sys.argv)

    grid = QGridLayout()
    browser = QWebView()
    url_input = UrlInput(browser)
    requests_table = RequestsTable()

    manager = Manager(requests_table)
    page = QWebPage()
    page.setNetworkAccessManager(manager)
    browser.setPage(page)
    browser.load(QUrl('index.html'))

    js_eval = JavaScriptEvaluator(page)
    action_box = ActionInputBox(page)

    #grid.addWidget(url_input, 1, 0)
    #grid.addWidget(action_box, 2, 0)
    grid.addWidget(browser, 3, 0)
    #grid.addWidget(requests_table, 4, 0)
    #grid.addWidget(js_eval, 5, 0)

    main_frame = QWidget()
    main_frame.resize(500, 630)
    main_frame.setLayout(grid)
    main_frame.show()

    sys.exit(app.exec_())
コード例 #24
0
ファイル: frmstudent.py プロジェクト: doyinspc/schoolmgtapp
class StudentForm(QDialog):
    def __init__(self, parent=None):
        super(StudentForm, self).__init__(parent)
        #self.setGeometry(50, 50, 820, 530)
        self.resize(530, 430)

        self.tabz = QTabWidget(self)
        self.tab1 = QWidget(self)
        self.tab2 = QWidget(self)
        self.tab3 = QWidget(self)
        self.tab4 = QWidget(self)

        #main form
        self.schno = QLabel("School Number")
        self.schnoData = QLineEdit()
        self.schnoData.setObjectName("schno")
        self.schnoData.setPlaceholderText("00000000")

        self.surname = QLabel("Surname")
        self.surnameData = QLineEdit()
        self.surnameData.setObjectName("surname")
        self.surnameData.setPlaceholderText("Surname")

        self.firstname = QLabel("Firstname")
        self.firstnameData = QLineEdit()
        self.firstnameData.setObjectName("firstname")
        self.firstnameData.setPlaceholderText("Firstname")

        self.middlename = QLabel("Middlename")
        self.middlenameData = QLineEdit()
        self.middlenameData.setObjectName("middlename")
        self.middlenameData.setPlaceholderText("middlename")

        self.soo = QLabel("State/Region of Origin")
        self.sooData = QLineEdit()
        self.sooData.setObjectName("soo")
        self.sooData.setPlaceholderText("Lagos")

        self.lga = QLabel("LGA/District")
        self.lgaData = QLineEdit()
        self.lgaData.setObjectName("lga")
        self.lgaData.setPlaceholderText("Ikeja")

        self.addr = QLabel("House Address")
        self.addrData = QTextEdit()
        self.addrData.setObjectName("addr")
        #self.addrData.setPlaceholderText("No. 12 Harrrison For Str., Ney York")

        self.dob = QLabel("Date of Birth")
        self.dobData = QDateEdit()
        self.dobData.setObjectName("dob")

        self.admit = QLabel("Date Admitted")
        self.admitData = QDateEdit()
        self.admitData.setObjectName("admit")

        self.pb = QPushButton()
        self.pb.setObjectName("Submit")
        self.pb.setText("Submit")

        self.pb1 = QPushButton()
        self.pb1.setObjectName("Cancel")
        self.pb1.setText("Cancel")

        hbo = QHBoxLayout()
        self.gender = QLabel('Gender')
        self.r1 = QRadioButton('Male')
        self.r2 = QRadioButton('Female')
        hbo.addWidget(self.r1)
        hbo.addWidget(self.r2)

        Formlayout = QFormLayout()
        Formlayout.addRow(self.schno, self.schnoData)
        Formlayout.addRow(self.surname, self.surnameData)
        Formlayout.addRow(self.firstname, self.firstnameData)
        Formlayout.addRow(self.middlename, self.middlenameData)
        Formlayout.addRow(self.gender, hbo)
        Formlayout.addRow(self.dob, self.dobData)
        Formlayout.addRow(self.admit, self.admitData)
        Formlayout.addRow(self.soo, self.sooData)
        Formlayout.addRow(self.lga, self.lgaData)
        Formlayout.addRow(self.addr, self.addrData)

        grid = QGridLayout()
        grid.addWidget(self.pb1, 0, 1)
        grid.addWidget(self.pb, 0, 0)

        groupBox = QGroupBox('BIODATA')
        groupBox.setLayout(Formlayout)

        vbox = QVBoxLayout()
        vbox.addWidget(groupBox)
        vbox.addStretch()
        vbox.addLayout(grid)

        #self.setLayout(vbox)
        self.connect(self.pb, SIGNAL("clicked()"),
                     lambda: self.button_click(1))
        self.connect(self.pb1, SIGNAL("clicked()"), self.close)
        self.setWindowTitle("Student Data")
        #self.setTabText(0, 'BioData')
        self.tab1.setLayout(vbox)

        #guardian data
        relations = [
            'Father', 'Mother', 'Aunt', 'Uncle', 'Grand Parent', 'Guardian',
            'Others'
        ]

        #first guardian details
        self.g1name = QLabel("First Guardian")
        self.g1Data = QLineEdit()
        self.g1Data.setObjectName("g1name")
        self.g1Data.setPlaceholderText("Fullname")

        self.g1rel = QLabel('Relationship')
        self.g1relData = QComboBox()
        self.g1relData.addItems(relations)

        self.g1p1 = QLabel("Phone Number")
        self.g1p1Data = QLineEdit()
        self.g1p1Data.setObjectName("g1p1")
        self.g1p1Data.setPlaceholderText("08000000000")

        self.g1p2 = QLabel("Alt. Phone Number")
        self.g1p2Data = QLineEdit()
        self.g1p2Data.setObjectName("g1p2")
        self.g1p2Data.setPlaceholderText("08000000000")

        self.g1email = QLabel("Email")
        self.g1emailData = QLineEdit()
        self.g1emailData.setObjectName("g1email")
        self.g1emailData.setPlaceholderText("*****@*****.**")

        self.g1addr = QLabel("Address")
        self.g1addrData = QTextEdit()
        self.g1addrData.setObjectName("g1add")
        #self.g1addrData.setPlaceholderText("No. 12 Harrrison For Str., Ney York")
        #second guardian details
        self.g2name = QLabel("Second Guardian")
        self.g2Data = QLineEdit()
        self.g2Data.setObjectName("g2name")
        self.g2Data.setPlaceholderText("Mr. Surname Lastname")

        self.g2rel = QLabel('Relationship')
        self.g2relData = QComboBox()
        self.g2relData.addItems(relations)

        self.g2p1 = QLabel("Phone Number")
        self.g2p1Data = QLineEdit()
        self.g2p1Data.setObjectName("g2p1")
        self.g2p1Data.setPlaceholderText("08000000000")

        self.g2p2 = QLabel("Alt. Phone Number")
        self.g2p2Data = QLineEdit()
        self.g2p2Data.setObjectName("g2p2")
        self.g2p2Data.setPlaceholderText("08000000000")

        self.g2email = QLabel("Email")
        self.g2emailData = QLineEdit()
        self.g2emailData.setObjectName("g2email")
        self.g2emailData.setPlaceholderText("*****@*****.**")

        self.g2addr = QLabel("Address")
        self.g2addrData = QTextEdit()
        self.g2addrData.setObjectName("g2add")
        #self.g2addrData.setPlaceholderText("No. 12 Harrrison For Str., Ney York")

        self.pb = QPushButton()
        self.pb.setObjectName("Submit")
        self.pb.setText("Submit")

        self.pb1 = QPushButton()
        self.pb1.setObjectName("Cancel")
        self.pb1.setText("Cancel")

        hbo = QHBoxLayout()

        self.gender = QLabel('Gender')
        self.r1 = QRadioButton('Male')
        self.r2 = QRadioButton('Female')
        hbo.addWidget(self.r1)
        hbo.addWidget(self.r2)

        Formlayout1 = QFormLayout()
        Formlayout1.addRow(self.g1name, self.g1Data)
        Formlayout1.addRow(self.g1rel, self.g1relData)
        Formlayout1.addRow(self.g1p1, self.g1p1Data)
        Formlayout1.addRow(self.g1p2, self.g1p2Data)
        Formlayout1.addRow(self.g1email, self.g1emailData)
        Formlayout1.addRow(self.g1addr, self.g1addrData)

        Formlayout2 = QFormLayout()
        Formlayout2.addRow(self.g2name, self.g2Data)
        Formlayout2.addRow(self.g2rel, self.g2relData)
        Formlayout2.addRow(self.g2p1, self.g2p1Data)
        Formlayout2.addRow(self.g2p2, self.g2p2Data)
        Formlayout2.addRow(self.g2email, self.g2emailData)
        Formlayout2.addRow(self.g2addr, self.g2addrData)

        grid1 = QGridLayout()
        grid1.addWidget(self.pb, 0, 0)
        grid1.addWidget(self.pb1, 0, 1)

        hbox1 = QHBoxLayout()
        hbox1.addLayout(Formlayout1)
        hbox1.addLayout(Formlayout2)

        groupBox2 = QGroupBox('GUARDIAN')
        groupBox2.setLayout(hbox1)

        vbox1 = QVBoxLayout()
        vbox1.addWidget(groupBox2)
        vbox1.addStretch()
        vbox1.addLayout(grid1)

        #photo
        self.pic1 = QLabel()
        image1 = Image.open('img/studentz.png')
        self.pic1.resize(100, 150)
        self.pic1.setLabel(image1)

        self.pic2 = QLabel()
        image2 = Image.open('img/studentz.png')
        self.pic2.resize(100, 150)
        self.pic2.setPixmap(image2)

        self.pic3 = QLabel()
        image3 = Image.open('img/studentz.png')
        self.pic3.resize(100, 150)
        self.pic3.setPixmap(image3)

        self.picBtn1 = QPushButton('Select Image')
        self.picBtn1.clicked.connect(self.getFilez)

        self.picBtn2 = QPushButton('Select Image')
        self.picBtn2.clicked.connect(self.getFilez)

        self.picBtn3 = QPushButton('Select Image')
        self.picBtn3.clicked.connect(self.getFilez)

        picGrid = QGridLayout()

        picGrid.addWidget(self.pic1, 0, 1)
        picGrid.addWidget(self.pic2, 0, 2)
        picGrid.addWidget(self.pic3, 0, 3)

        picGrid.addWidget(self.picBtn1, 1, 1)
        picGrid.addWidget(self.picBtn2, 2, 2)
        picGrid.addWidget(self.picBtn3, 3, 3)

        self.tabz.addTab(self.tab1, 'Bio-Data')
        self.tabz.addTab(self.tab2, 'Contact Details')
        self.tabz.addTab(self.tab3, 'Passports')

        #self.tabz.setTabEnabled(1, False)
        #self.tabz.setTabEnabled(2, False)

        self.setWindowTitle("Add Student Data")
        self.show()

    def getFile(self, a):
        fname = QFileDialog.getOpenFileName(self, 'Open', 'c:\\',
                                            "Image File (*.jpg *.png)")
        if a == 1:
            self.pic1.setPixmap(QPixmap(fname))
        elif a == 2:
            self.pic2.setPixmap(QPixmap(fname))
        elif a == 2:
            self.pic3.setPixmap(QPixmap(fname))

    def getFilez(self):
        fname = QFileDialog.getOpenFileName(self, 'Open', 'c:\\',
                                            "Image File (*.jpg *.png)")
        self.pic1.setPixmap(QPixmap(fname))

    def contFill(self, a):

        sid = a
        data = self.pullStudents(a)
        self.resize(430, 530)

        #self.tabz = QTabWidget(self)
        self.tabz.clear()

        self.tab1 = QWidget(self)
        self.tab2 = QWidget(self)
        self.tab3 = QWidget(self)

        self.schno = QLabel("School Number")
        self.schnoData = QLineEdit()
        self.schnoData.setObjectName("schno")
        if (data['schno'] and len(data['schno']) > 1):
            self.schnoData.setText(data['schno'])
        else:
            self.schnoData.setPlaceholderText("00000000")

        self.surname = QLabel("Surname")
        self.surnameData = QLineEdit()
        self.surnameData.setObjectName("surname")
        if (data['surname'] and len(data['surname']) > 1):
            tx = data['surname']
            self.surnameData.setText(tx.title())
        else:
            self.surnameData.setPlaceholderText("Surname")

        self.firstname = QLabel("Firstname")
        self.firstnameData = QLineEdit()
        self.firstnameData.setObjectName("firstname")
        if (data['firstname'] and len(data['firstname'])):
            tx = data['firstname']
            self.firstnameData.setText(tx.title())
        else:
            self.firstnameData.setPlaceholderText("Firstname")

        self.middlename = QLabel("Middlename")
        self.middlenameData = QLineEdit()
        self.middlenameData.setObjectName("middlename")
        if (data['othername'] and len(data['othername']) > 1):
            tx = data['othername']
            self.middlenameData.setText(tx.title())
        else:
            self.middlenameData.setPlaceholderText("othername")

        self.soo = QLabel("State/Region of Origin")
        self.sooData = QLineEdit()
        self.sooData.setObjectName("soo")
        if (data['soo'] and len(data['soo']) > 1):
            tx = data['soo']
            self.sooData.setText(tx.title())
        else:
            self.sooData.setPlaceholderText("Lagos")

        self.lga = QLabel("LGA/District")
        self.lgaData = QLineEdit()
        self.lgaData.setObjectName("lga")
        if (data['lga'] and len(data['lga'])):
            tx = data['lga']
            self.lgaData.setText(tx.title())
        else:
            self.lgaData.setPlaceholderText("Ikeja")

        self.addr = QLabel("House Address")
        self.addrData = QTextEdit()
        self.addrData.setObjectName("addr")
        if (data['addr'] and len(data['addr'])):
            tx = data['addr']
            self.addrData.setText(tx)
        else:
            pass

        self.dob = QLabel("Date of Birth")
        self.dobData = QDateEdit()
        self.dobData.setObjectName("dob")
        tx = QDate.fromString(data['dob'], 'yyyy-MM-dd')
        self.dobData.setDate(QDate(tx.year(), tx.month(), tx.day()))

        self.admit = QLabel("Date Admitted")
        self.admitData = QDateEdit()
        self.admitData.setObjectName("admit")
        tx = QDate.fromString(data['admit'], 'yyyy-MM-dd')
        self.admitData.setDate(QDate(tx.year(), tx.month(), tx.day()))

        self.pb4 = QPushButton()
        self.pb4.setObjectName("Submit")
        self.pb4.setText("Submit")

        self.pb5 = QPushButton()
        self.pb5.setObjectName("Cancel")
        self.pb5.setText("Cancel")

        hbo = QHBoxLayout()
        self.gender = QLabel('Gender')
        self.r1 = QRadioButton('Male')
        self.r2 = QRadioButton('Female')
        if (data['gender'] == 'Male'):
            self.r1.setChecked(True)
        elif (data['gender'] == 'Female'):
            self.r2.setChecked(True)

        hbo.addWidget(self.r1)
        hbo.addWidget(self.r2)

        Formlayout = QFormLayout()
        Formlayout.addRow(self.schno, self.schnoData)
        Formlayout.addRow(self.surname, self.surnameData)
        Formlayout.addRow(self.firstname, self.firstnameData)
        Formlayout.addRow(self.middlename, self.middlenameData)
        Formlayout.addRow(self.gender, hbo)
        Formlayout.addRow(self.dob, self.dobData)
        Formlayout.addRow(self.admit, self.admitData)
        Formlayout.addRow(self.soo, self.sooData)
        Formlayout.addRow(self.lga, self.lgaData)
        Formlayout.addRow(self.addr, self.addrData)

        grid = QGridLayout()
        grid.addWidget(self.pb1, 0, 1)
        grid.addWidget(self.pb, 0, 0)

        groupBox = QGroupBox('BIODATA')
        groupBox.setLayout(Formlayout)

        vbox = QVBoxLayout()
        vbox.addWidget(groupBox)
        vbox.addStretch()
        vbox.addLayout(grid)

        #self.setLayout(vbox)
        self.connect(self.pb4, SIGNAL("clicked()"),
                     lambda: self.button1_click(sid))
        self.connect(self.pb5, SIGNAL("clicked()"), self.close)
        self.tab1.setLayout(vbox)

        relations = [
            'Father', 'Mother', 'Aunt', 'Uncle', 'Grand Parent', 'Guardian',
            'Others'
        ]

        #first guardian details
        self.g1name = QLabel("First Guardian")
        self.g1Data = QLineEdit()
        self.g1Data.setObjectName("g1name")
        if (data['g1'] and len(data['g1']) > 1):
            tx = data['g1']
            self.g1Data.setText(tx.title())
        else:
            self.g1Data.setPlaceholderText("Mr. Surname Lastname")

        self.g1rel = QLabel('Relationship')
        self.g1relData = QComboBox()
        self.g1relData.addItems(relations)
        if data['g1rel'] and len(data['g1rel']) > 0:
            index1 = self.g1relData.findText(data['g1rel'],
                                             Qt.QtMatchFixedString)
            if index1 >= 0:
                self.g1relData.setCurrentIndex(index1)

        self.g1p1 = QLabel("Phone Number")
        self.g1p1Data = QLineEdit()
        self.g1p1Data.setObjectName("g1p1")
        if (data['g1p1'] and len(data['g1p1']) > 1):
            tx = data['g1p1']
            self.g1p1Data.setText(tx.title())
        else:
            self.g1p1Data.setPlaceholderText("08000000000")

        self.g1p2 = QLabel("Alt. Phone Number")
        self.g1p2Data = QLineEdit()
        self.g1p2Data.setObjectName("g1p2")
        if (data['g1p2'] and len(data['g1p2']) > 1):
            tx = data['g1p2']
            self.g1p2Data.setText(tx.title())
        else:
            self.g1p2Data.setPlaceholderText("08000000000")

        self.g1email = QLabel("Email")
        self.g1emailData = QLineEdit()
        self.g1emailData.setObjectName("g1email")
        if (data['g1email'] and len(data['g1email']) > 1):
            tx = data['g1email']
            self.g1Data.setText(tx.title())
        else:
            self.g1Data.setPlaceholderText("*****@*****.**")

        self.g1addr = QLabel("Address")
        self.g1addrData = QTextEdit()
        self.g1addrData.setObjectName("g1add")
        if (data['g1addr'] and len(data['g1addr']) > 1):
            tx = data['g1addr']
            self.g1Data.setText(tx.title())
        else:
            pass

        #second guardian details
        self.g2name = QLabel("Second Guardian")
        self.g2Data = QLineEdit()
        self.g2Data.setObjectName("g2name")
        if (data['g2'] and len(data['g2']) > 1):
            tx = data['g2']
            self.g2Data.setText(tx.title())
        else:
            self.g2Data.setPlaceholderText("Title. Surname Lastname")

        self.g2rel = QLabel('Relationship')
        self.g2relData = QComboBox()
        self.g2relData.addItems(relations)
        if data['g2rel'] and len(data['g2rel']) > 0:
            index2 = self.g2relData.findText(data['g2rel'],
                                             Qt.QtMatchFixedString)
            if index2 >= 0:
                self.g2relData.setCurrentIndex(index2)

        self.g2p1 = QLabel("Phone Number")
        self.g2p1Data = QLineEdit()
        self.g2p1Data.setObjectName("g2p1")
        if (data['g2p1'] and len(data['g2p1']) > 1):
            tx = data['g2p1']
            self.g2p1Data.setText(tx.title())
        else:
            self.g2p1Data.setPlaceholderText("08000000000")

        self.g2p2 = QLabel("Alt. Phone Number")
        self.g2p2Data = QLineEdit()
        self.g2p2Data.setObjectName("g2p2")
        if (data['g2p2'] and len(data['g2p2']) > 1):
            tx = data['g2p2']
            self.g2p2Data.setText(tx.title())
        else:
            self.g2p2Data.setPlaceholderText("0800000000")

        self.g2email = QLabel("Email")
        self.g2emailData = QLineEdit()
        self.g2emailData.setObjectName("g2email")
        if (data['g2email'] and len(data['g2email']) > 1):
            tx = data['g2email']
            self.g2emailData.setText(tx.title())
        else:
            self.g2emailData.setPlaceholderText("*****@*****.**")

        self.g2addr = QLabel("Address")
        self.g2addrData = QTextEdit()
        self.g2addrData.setObjectName("g2add")
        if (data['g2addr'] and len(data['g2addr']) > 1):
            tx = data['g2addr']
            self.g2Data.setText(tx.title())
        else:
            pass

        self.pb = QPushButton()
        self.pb.setObjectName("Submit")
        self.pb.setText("Submit")

        self.pb1 = QPushButton()
        self.pb1.setObjectName("Cancel")
        self.pb1.setText("Cancel")

        hbo = QHBoxLayout()

        self.gender = QLabel('Gender')
        self.r1 = QRadioButton('Male')
        self.r2 = QRadioButton('Female')
        hbo.addWidget(self.r1)
        hbo.addWidget(self.r2)

        Formlayout1 = QFormLayout()
        Formlayout1.addRow(self.g1name, self.g1Data)
        Formlayout1.addRow(self.g1rel, self.g1relData)
        Formlayout1.addRow(self.g1p1, self.g1p1Data)
        Formlayout1.addRow(self.g1p2, self.g1p2Data)
        Formlayout1.addRow(self.g1email, self.g1emailData)
        Formlayout1.addRow(self.g1addr, self.g1addrData)

        Formlayout2 = QFormLayout()
        Formlayout2.addRow(self.g2name, self.g2Data)
        Formlayout2.addRow(self.g2rel, self.g2relData)
        Formlayout2.addRow(self.g2p1, self.g2p1Data)
        Formlayout2.addRow(self.g2p2, self.g2p2Data)
        Formlayout2.addRow(self.g2email, self.g2emailData)
        Formlayout2.addRow(self.g2addr, self.g2addrData)

        grid1 = QGridLayout()
        grid1.addWidget(self.pb, 0, 0)
        grid1.addWidget(self.pb1, 0, 1)

        hbox1 = QHBoxLayout()
        hbox1.addLayout(Formlayout1)
        hbox1.addStretch()
        hbox1.addLayout(Formlayout2)

        groupBox2 = QGroupBox('GUARDIAN')
        groupBox2.setLayout(hbox1)

        vbox1 = QVBoxLayout()
        vbox1.addWidget(groupBox2)
        vbox1.addStretch()
        vbox1.addLayout(grid1)

        self.tab2.setLayout(vbox1)

        #photo
        picstyle = QSize(120, 180)
        picstyle1 = Qt.KeepAspectRatio

        self.pic1Lbl = QLabel('YEAR 1 & 2')
        self.pic2Lbl = QLabel('YEAR 3 & 4')
        self.pic3Lbl = QLabel('YEAR 5 & 6')

        self.pic1 = QLabel()
        pixmap1 = QPixmap('img/studentz.png').scaled(picstyle, picstyle1)
        self.pic1.setPixmap(pixmap1)

        self.pic2 = QLabel()
        pixmap2 = QPixmap('img/studentz.png').scaled(picstyle, picstyle1)
        self.pic2.setPixmap(pixmap2)

        self.pic3 = QLabel()
        pixmap3 = QPixmap('img/studentz.png').scaled(picstyle, picstyle1)
        self.pic3.setPixmap(pixmap3)

        self.picBtn1 = QPushButton('Select Image')
        self.picBtn1.clicked.connect(self.getFilez)

        self.picBtn2 = QPushButton('Select Image')
        self.picBtn2.clicked.connect(self.getFilez)

        self.picBtn3 = QPushButton('Select Image')
        self.picBtn3.clicked.connect(self.getFilez)

        self.pic1Lbl.setSizePolicy(QSizePolicy.Minimum, QSizePolicy.Minimum)
        self.pic2Lbl.setSizePolicy(QSizePolicy.Minimum, QSizePolicy.Minimum)
        self.pic3Lbl.setSizePolicy(QSizePolicy.Minimum, QSizePolicy.Minimum)

        self.picBtn1.setSizePolicy(QSizePolicy.Minimum, QSizePolicy.Minimum)
        self.picBtn2.setSizePolicy(QSizePolicy.Minimum, QSizePolicy.Minimum)
        self.picBtn3.setSizePolicy(QSizePolicy.Minimum, QSizePolicy.Minimum)

        h1pic = QVBoxLayout()
        h2pic = QVBoxLayout()
        h3pic = QVBoxLayout()
        vpic = QHBoxLayout()

        h1pic.addWidget(self.pic1Lbl)
        h1pic.addStretch(0)
        h1pic.addWidget(self.pic1)
        h1pic.addStretch(0)
        h1pic.addWidget(self.picBtn1)
        h1pic.setContentsMargins(0, 0, 0, 0)
        h1pic.setSpacing(0)
        h1pic.setMargin(0)

        h2pic.addWidget(self.pic2Lbl)
        h2pic.addStretch(0)
        h2pic.addWidget(self.pic2)
        h2pic.addStretch(0)
        h2pic.addWidget(self.picBtn2)
        h2pic.setContentsMargins(0, 0, 0, 0)
        h2pic.setSpacing(0)
        h2pic.setMargin(0)

        h3pic.addWidget(self.pic3Lbl)
        h3pic.addStretch(0)
        h3pic.addWidget(self.pic3)
        h3pic.addStretch(0)
        h3pic.addWidget(self.picBtn3)
        h3pic.setContentsMargins(0, 0, 0, 0)
        h3pic.setSpacing(0)
        h3pic.setMargin(0)

        vpic.addLayout(h1pic)
        vpic.addStretch(0)
        vpic.addLayout(h2pic)
        vpic.addStretch(0)
        vpic.addLayout(h3pic)
        vpic.setSpacing(0)
        vpic.setMargin(0)
        vpic.setContentsMargins(0, 0, 0, 0)

        self.tab3.setLayout(vpic)
        self.tab3.resize(100, 100)
        #self.tab3.setStyleSheet("background-color: red; margin:5px; border:1px solid red;")

        self.tabz.addTab(self.tab1, 'Bio-Data')
        self.tabz.addTab(self.tab2, 'Contact Details')
        self.tabz.addTab(self.tab3, 'Passports')

        self.setWindowTitle("Add Student Data")
        self.show()

    def eContFill(self, a):

        sid = 23
        data = self.pullStudents(a)
        self.resize(430, 530)

        #self.tabz = QTabWidget(self)
        self.tabz.clear()

        self.tab1 = QWidget(self)
        self.tab2 = QWidget(self)
        self.tab3 = QWidget(self)

        self.schno = QLabel("School Number")
        self.schnoData = QLineEdit()
        self.schnoData.setObjectName("schno")
        if (data['schno'] and len(data['schno']) > 1):
            self.schnoData.setText(data['schno'])
        else:
            self.schnoData.setPlaceholderText("00000000")

        self.surname = QLabel("Surname")
        self.surnameData = QLineEdit()
        self.surnameData.setObjectName("surname")
        if (data['surname'] and len(data['surname']) > 1):
            tx = data['surname']
            self.surnameData.setText(tx.title())
        else:
            self.surnameData.setPlaceholderText("Surname")

        self.firstname = QLabel("Firstname")
        self.firstnameData = QLineEdit()
        self.firstnameData.setObjectName("firstname")
        if (data['firstname'] and len(data['firstname'])):
            tx = data['firstname']
            self.firstnameData.setText(tx.title())
        else:
            self.firstnameData.setPlaceholderText("Firstname")

        self.middlename = QLabel("Middlename")
        self.middlenameData = QLineEdit()
        self.middlenameData.setObjectName("middlename")
        if (data['othername'] and len(data['othername']) > 1):
            tx = data['othername']
            self.middlenameData.setText(tx.title())
        else:
            self.middlenameData.setPlaceholderText("othername")

        self.soo = QLabel("State/Region of Origin")
        self.sooData = QLineEdit()
        self.sooData.setObjectName("soo")
        if (data['soo'] and len(data['soo']) > 1):
            tx = data['soo']
            self.sooData.setText(tx.title())
        else:
            self.sooData.setPlaceholderText("Lagos")

        self.lga = QLabel("LGA/District")
        self.lgaData = QLineEdit()
        self.lgaData.setObjectName("lga")
        if (data['lga'] and len(data['lga'])):
            tx = data['lga']
            self.lgaData.setText(tx.title())
        else:
            self.lgaData.setPlaceholderText("Ikeja")

        self.addr = QLabel("House Address")
        self.addrData = QTextEdit()
        self.addrData.setObjectName("addr")
        if (data['addr'] and len(data['addr'])):
            tx = data['addr']
            self.addrData.setText(tx)
        else:
            pass

        self.dob = QLabel("Date of Birth")
        self.dobData = QDateEdit()
        self.dobData.setObjectName("dob")
        tx = QDate.fromString(data['dob'], 'yyyy-MM-dd')
        self.dobData.setDate(QDate(tx.year(), tx.month(), tx.day()))

        self.admit = QLabel("Date Admitted")
        self.admitData = QDateEdit()
        self.admitData.setObjectName("admit")
        tx = QDate.fromString(data['admit'], 'yyyy-MM-dd')
        self.admitData.setDate(QDate(tx.year(), tx.month(), tx.day()))

        self.pb4 = QPushButton()
        self.pb4.setObjectName("Submit")
        self.pb4.setText("Submit")

        self.pb5 = QPushButton()
        self.pb5.setObjectName("Cancel")
        self.pb5.setText("Cancel")

        hbo = QHBoxLayout()
        self.gender = QLabel('Gender')
        self.r1 = QRadioButton('Male')
        self.r2 = QRadioButton('Female')
        if (data['gender'] == 'Male'):
            self.r1.setChecked(True)
        elif (data['gender'] == 'Female'):
            self.r2.setChecked(True)

        hbo.addWidget(self.r1)
        hbo.addWidget(self.r2)

        Formlayout = QFormLayout()
        Formlayout.addRow(self.schno, self.schnoData)
        Formlayout.addRow(self.surname, self.surnameData)
        Formlayout.addRow(self.firstname, self.firstnameData)
        Formlayout.addRow(self.middlename, self.middlenameData)
        Formlayout.addRow(self.gender, hbo)
        Formlayout.addRow(self.dob, self.dobData)
        Formlayout.addRow(self.admit, self.admitData)
        Formlayout.addRow(self.soo, self.sooData)
        Formlayout.addRow(self.lga, self.lgaData)
        Formlayout.addRow(self.addr, self.addrData)

        grid = QGridLayout()
        grid.addWidget(self.pb1, 0, 1)
        grid.addWidget(self.pb, 0, 0)

        groupBox = QGroupBox('BIODATA')
        groupBox.setLayout(Formlayout)

        vbox = QVBoxLayout()
        vbox.addWidget(groupBox)
        vbox.addStretch()
        vbox.addLayout(grid)

        #self.setLayout(vbox)
        self.connect(self.pb4, SIGNAL("clicked()"),
                     lambda: self.button1_click(sid))
        self.connect(self.pb5, SIGNAL("clicked()"), self.close)
        self.tab1.setLayout(vbox)

        relations = [
            'Father', 'Mother', 'Aunt', 'Uncle', 'Grand Parent', 'Guardian',
            'Others'
        ]

        #first guardian details
        self.g1name = QLabel("First Guardian")
        self.g1Data = QLineEdit()
        self.g1Data.setObjectName("g1name")
        if (data['g1'] and len(data['g1']) > 1):
            tx = data['g1']
            self.g1Data.setText(tx.title())
        else:
            self.g1Data.setPlaceholderText("Mr. Surname Lastname")

        self.g1rel = QLabel('Relationship')
        self.g1relData = QComboBox()
        self.g1relData.addItems(relations)
        if data['g1rel'] and len(data['g1rel']) > 0:
            index1 = self.g1relData.findText(data['g1rel'],
                                             Qt.QtMatchFixedString)
            if index1 >= 0:
                self.g1relData.setCurrentIndex(index1)

        self.g1p1 = QLabel("Phone Number")
        self.g1p1Data = QLineEdit()
        self.g1p1Data.setObjectName("g1p1")
        if (data['g1p1'] and len(data['g1p1']) > 1):
            tx = data['g1p1']
            self.g1p1Data.setText(tx.title())
        else:
            self.g1p1Data.setPlaceholderText("08000000000")

        self.g1p2 = QLabel("Alt. Phone Number")
        self.g1p2Data = QLineEdit()
        self.g1p2Data.setObjectName("g1p2")
        if (data['g1p2'] and len(data['g1p2']) > 1):
            tx = data['g1p2']
            self.g1p2Data.setText(tx.title())
        else:
            self.g1p2Data.setPlaceholderText("08000000000")

        self.g1email = QLabel("Email")
        self.g1emailData = QLineEdit()
        self.g1emailData.setObjectName("g1email")
        if (data['g1email'] and len(data['g1email']) > 1):
            tx = data['g1email']
            self.g1Data.setText(tx.title())
        else:
            self.g1Data.setPlaceholderText("*****@*****.**")

        self.g1addr = QLabel("Address")
        self.g1addrData = QTextEdit()
        self.g1addrData.setObjectName("g1add")
        if (data['g1addr'] and len(data['g1addr']) > 1):
            tx = data['g1addr']
            self.g1Data.setText(tx.title())
        else:
            pass

        #second guardian details
        self.g2name = QLabel("Second Guardian")
        self.g2Data = QLineEdit()
        self.g2Data.setObjectName("g2name")
        if (data['g2'] and len(data['g2']) > 1):
            tx = data['g2']
            self.g2Data.setText(tx.title())
        else:
            self.g2Data.setPlaceholderText("Title. Surname Lastname")

        self.g2rel = QLabel('Relationship')
        self.g2relData = QComboBox()
        self.g2relData.addItems(relations)
        if data['g2rel'] and len(data['g2rel']) > 0:
            index2 = self.g2relData.findText(data['g2rel'],
                                             Qt.QtMatchFixedString)
            if index2 >= 0:
                self.g2relData.setCurrentIndex(index2)

        self.g2p1 = QLabel("Phone Number")
        self.g2p1Data = QLineEdit()
        self.g2p1Data.setObjectName("g2p1")
        if (data['g2p1'] and len(data['g2p1']) > 1):
            tx = data['g2p1']
            self.g2p1Data.setText(tx.title())
        else:
            self.g2p1Data.setPlaceholderText("08000000000")

        self.g2p2 = QLabel("Alt. Phone Number")
        self.g2p2Data = QLineEdit()
        self.g2p2Data.setObjectName("g2p2")
        if (data['g2p2'] and len(data['g2p2']) > 1):
            tx = data['g2p2']
            self.g2p2Data.setText(tx.title())
        else:
            self.g2p2Data.setPlaceholderText("0800000000")

        self.g2email = QLabel("Email")
        self.g2emailData = QLineEdit()
        self.g2emailData.setObjectName("g2email")
        if (data['g2email'] and len(data['g2email']) > 1):
            tx = data['g2email']
            self.g2emailData.setText(tx.title())
        else:
            self.g2emailData.setPlaceholderText("*****@*****.**")

        self.g2addr = QLabel("Address")
        self.g2addrData = QTextEdit()
        self.g2addrData.setObjectName("g2add")
        if (data['g2addr'] and len(data['g2addr']) > 1):
            tx = data['g2addr']
            self.g2Data.setText(tx.title())
        else:
            pass

        self.pb = QPushButton()
        self.pb.setObjectName("Submit")
        self.pb.setText("Submit")

        self.pb1 = QPushButton()
        self.pb1.setObjectName("Cancel")
        self.pb1.setText("Cancel")

        hbo = QHBoxLayout()

        self.gender = QLabel('Gender')
        self.r1 = QRadioButton('Male')
        self.r2 = QRadioButton('Female')
        hbo.addWidget(self.r1)
        hbo.addWidget(self.r2)

        Formlayout1 = QFormLayout()
        Formlayout1.addRow(self.g1name, self.g1Data)
        Formlayout1.addRow(self.g1rel, self.g1relData)
        Formlayout1.addRow(self.g1p1, self.g1p1Data)
        Formlayout1.addRow(self.g1p2, self.g1p2Data)
        Formlayout1.addRow(self.g1email, self.g1emailData)
        Formlayout1.addRow(self.g1addr, self.g1addrData)

        Formlayout2 = QFormLayout()
        Formlayout2.addRow(self.g2name, self.g2Data)
        Formlayout2.addRow(self.g2rel, self.g2relData)
        Formlayout2.addRow(self.g2p1, self.g2p1Data)
        Formlayout2.addRow(self.g2p2, self.g2p2Data)
        Formlayout2.addRow(self.g2email, self.g2emailData)
        Formlayout2.addRow(self.g2addr, self.g2addrData)

        grid1 = QGridLayout()
        grid1.addWidget(self.pb, 0, 0)
        grid1.addWidget(self.pb1, 0, 1)

        hbox1 = QHBoxLayout()
        hbox1.addLayout(Formlayout1)
        hbox1.addStretch()
        hbox1.addLayout(Formlayout2)

        groupBox2 = QGroupBox('GUARDIAN')
        groupBox2.setLayout(hbox1)

        vbox1 = QVBoxLayout()
        vbox1.addWidget(groupBox2)
        vbox1.addStretch()
        vbox1.addLayout(grid1)

        self.tab2.setLayout(vbox1)

        #photo
        picstyle = QSize(120, 180)
        picstyle1 = Qt.KeepAspectRatio

        self.pic1Lbl = QLabel('YEAR 1 & 2')
        self.pic2Lbl = QLabel('YEAR 3 & 4')
        self.pic3Lbl = QLabel('YEAR 5 & 6')

        self.pic1 = QLabel()
        pixmap1 = QPixmap('img/studentz.png').scaled(picstyle, picstyle1)
        self.pic1.setPixmap(pixmap1)

        self.pic2 = QLabel()
        pixmap2 = QPixmap('img/studentz.png').scaled(picstyle, picstyle1)
        self.pic2.setPixmap(pixmap2)

        self.pic3 = QLabel()
        pixmap3 = QPixmap('img/studentz.png').scaled(picstyle, picstyle1)
        self.pic3.setPixmap(pixmap3)

        self.picBtn1 = QPushButton('Select Image')
        self.picBtn1.clicked.connect(self.getFilez)

        self.picBtn2 = QPushButton('Select Image')
        self.picBtn2.clicked.connect(self.getFilez)

        self.picBtn3 = QPushButton('Select Image')
        self.picBtn3.clicked.connect(self.getFilez)

        self.pic1Lbl.setSizePolicy(QSizePolicy.Minimum, QSizePolicy.Minimum)
        self.pic2Lbl.setSizePolicy(QSizePolicy.Minimum, QSizePolicy.Minimum)
        self.pic3Lbl.setSizePolicy(QSizePolicy.Minimum, QSizePolicy.Minimum)

        self.picBtn1.setSizePolicy(QSizePolicy.Minimum, QSizePolicy.Minimum)
        self.picBtn2.setSizePolicy(QSizePolicy.Minimum, QSizePolicy.Minimum)
        self.picBtn3.setSizePolicy(QSizePolicy.Minimum, QSizePolicy.Minimum)

        h1pic = QVBoxLayout()
        h2pic = QVBoxLayout()
        h3pic = QVBoxLayout()
        vpic = QHBoxLayout()

        h1pic.addWidget(self.pic1Lbl)
        h1pic.addStretch(0)
        h1pic.addWidget(self.pic1)
        h1pic.addStretch(0)
        h1pic.addWidget(self.picBtn1)
        h1pic.setContentsMargins(0, 0, 0, 0)
        h1pic.setSpacing(0)
        h1pic.setMargin(0)

        h2pic.addWidget(self.pic2Lbl)
        h2pic.addStretch(0)
        h2pic.addWidget(self.pic2)
        h2pic.addStretch(0)
        h2pic.addWidget(self.picBtn2)
        h2pic.setContentsMargins(0, 0, 0, 0)
        h2pic.setSpacing(0)
        h2pic.setMargin(0)

        h3pic.addWidget(self.pic3Lbl)
        h3pic.addStretch(0)
        h3pic.addWidget(self.pic3)
        h3pic.addStretch(0)
        h3pic.addWidget(self.picBtn3)
        h3pic.setContentsMargins(0, 0, 0, 0)
        h3pic.setSpacing(0)
        h3pic.setMargin(0)

        vpic.addLayout(h1pic)
        vpic.addStretch(0)
        vpic.addLayout(h2pic)
        vpic.addStretch(0)
        vpic.addLayout(h3pic)
        vpic.setSpacing(0)
        vpic.setMargin(0)
        vpic.setContentsMargins(0, 0, 0, 0)

        self.tab3.setLayout(vpic)
        self.tab3.resize(100, 100)
        self.tab3.setStyleSheet(
            "background-color: red; margin:5px; border:1px solid red;")

        self.tabz.addTab(self.tab1, 'Bio-Data')
        self.tabz.addTab(self.tab2, 'Contact Details')
        self.tabz.addTab(self.tab3, 'Passports')

        self.setWindowTitle("Add Student Data")
        self.show()

    def button_click(self, a):
        # shost is a QString object
        arr = {}
        arr['schno'] = self.schnoData.text()
        arr['surname'] = self.surnameData.text()
        arr['firstname'] = self.firstnameData.text()
        arr['othername'] = self.middlenameData.text()
        arr['soo'] = self.sooData.text()
        arr['lga'] = self.lgaData.text()
        arr['addr'] = self.addrData.toPlainText()
        dob = self.dobData.date()
        arr['dob'] = dob.toPyDate()
        admit = self.admitData.date()
        arr['admit'] = admit.toPyDate()
        arr['active'] = 0
        if self.r1.isChecked():
            arr['gender'] = 0
        else:
            arr['gender'] = 1

        self.a = a

        g = Db()
        if ((arr['surname']) and (arr['firstname']) and (arr['schno'])):
            h = g.insert('students', arr)

        self.contFill(h)

    def button1_click(self, a):
        # shost is a QString object
        arr = {}
        arr['schno'] = self.schnoData.text()
        arr['surname'] = self.surnameData.text()
        arr['firstname'] = self.firstnameData.text()
        arr['othername'] = self.middlenameData.text()
        arr['soo'] = self.sooData.text()
        arr['lga'] = self.lgaData.text()
        arr['addr'] = self.addrData.toPlainText()
        dob = self.dobData.date()
        arr['dob'] = dob.toPyDate()
        admit = self.admitData.date()
        arr['admit'] = admit.toPyDate()
        arr['active'] = 0

        arr['g1'] = self.g1Data.text()
        arr['g1rel'] = self.g1relData.itemData(self.g1relData.currentIndex())
        arr['g1p1'] = self.g1p1Data.text()
        arr['g1p2'] = self.g1p2Data.text()
        arr['g1email'] = self.g1emailData.text()
        arr['g1addr'] = self.g1addData.text()
        arr['g2'] = self.g2Data.text()
        arr['g2rel'] = self.g2relData.itemData(self.g2relData.currentIndex())
        arr['g2p1'] = self.g2p1Data.text()
        arr['g2p2'] = self.g2p2Data.text()
        arr['g2email'] = self.g2emailData.text()
        arr['g2addr'] = self.g2addData.text()

        self.a = a
        print(arr)
        g = Db()
        if ((arr['surname']) and (arr['firstname']) and (arr['schno'])):
            r = g.update('students', arr, {'id': self.a})
        print(r)
        self.close()

    def button_click1(self, a):
        # shost is a QString object
        s1 = self.le.text()
        s2 = self.le2.text()
        self.a = a
        g = Db()
        if (len(s1) > 0):
            y = {'name': s1, 'subID': self.a, 'abbrv': s2}
            j = g.insert('datas', y)
            return j

    def pullClass(self, a):
        self.a = a
        cn = Db()
        students = cn.select('datas', '', '', {'subID': self.a})
        arr = {}

        for j in students:
            arr[j[0]] = j[2]
        return arr

    def pullStudents(self, a):
        self.a = a
        cn = Db()
        students = cn.selectn('students', '', 1, {'id': self.a})
        return students

    def lunchUnitForm(self, a):
        self.a = a

        self.form = UnitForm(self.a)
        self.form.show()
コード例 #25
0
ファイル: HeatRenderUI.py プロジェクト: gjwfiza/my_qgising
    def __init__(self,
                 iface,
                 styleManager,
                 max_value,
                 min_value,
                 legend_name,
                 parent=None):
        super(HeatRenderLegend, self).__init__()
        self.iface = iface
        self.styleManager = styleManager  # 当前图层的样式管理器
        if max_value:
            self.max_value = max_value
        else:
            self.max_value = 0.0
        if min_value:
            self.min_value = min_value
        else:
            self.min_value = 0.0
        if legend_name:
            self.legend_name = legend_name
        else:
            self.legend_name = u"渲染图例"
        self.parent = parent

        delta = self.max_value - self.min_value

        self.setWindowTitle(self.legend_name)
        self.setWindowFlags(Qt.WindowStaysOnTopHint)
        self.setWindowFlags(Qt.WindowMinimizeButtonHint)

        widget_100 = QWidget()
        widget_100.setStyleSheet('QWidget {background-color: red}')
        widget_100.resize(20, 20)
        label_100 = QLabel("%.4f" % (float(self.max_value)))

        widget_75 = QWidget()
        widget_75.setStyleSheet('QWidget {background-color: #ffff00}')
        widget_75.resize(20, 20)
        label_75 = QLabel("%.4f" % (float(delta * 0.75) + self.min_value))

        widget_50 = QWidget()
        widget_50.setStyleSheet('QWidget {background-color: #00ff00}')
        widget_50.resize(20, 20)
        label_50 = QLabel("%.4f" % (float(delta * 0.50 + self.min_value)))

        widget_25 = QWidget()
        widget_25.setStyleSheet('QWidget {background-color: #00ffff}')
        widget_25.resize(20, 20)
        label_25 = QLabel("%.4f" % float((delta * 0.25 + self.min_value)))

        grid = QGridLayout()
        grid.setSpacing(20)
        grid.addWidget(widget_100, 0, 0)
        grid.addWidget(label_100, 0, 1)
        grid.addWidget(widget_75, 1, 0)
        grid.addWidget(label_75, 1, 1)
        grid.addWidget(widget_50, 2, 0)
        grid.addWidget(label_50, 2, 1)
        grid.addWidget(widget_25, 3, 0)
        grid.addWidget(label_25, 3, 1)

        self.setLayout(grid)
        self.setGeometry(300, 300, 250, 200)
コード例 #26
0
class SectionsContainerWidget(QWidget):
    def __init__(self, parent=None, isLinacSection=True, sectionClass=None):
        QWidget.__init__(self, parent)
        self.isLinacSection = isLinacSection
        self.sectionClass = sectionClass
        self.setParent(parent)
        self.sectionWidgets = list()
        self.setMinimumWidth(460)
        self.setMinimumHeight(600)
        self.sumSize = 0

        self.setupLayout()
        self.setupScrollArea()
        self.addSectionButton = QPushButton(self.containerWidget)
        self.addSectionButton.setText("Add new section")
        self.layout.addWidget(self.addSectionButton)

        self.connect(self.addSectionButton, QtCore.SIGNAL("clicked()"),
                     self.addNewSection)

    def setupLayout(self):
        self.containerWidget = QWidget(self)
        self.widgetHeight = 120
        self.containerWidget.setGeometry(QRect(0, 0, 460, self.widgetHeight))

        self.layout = QVBoxLayout()
        self.containerWidget.setLayout(self.layout)

    def setupScrollArea(self):
        self.scrollArea = QScrollArea(self)
        self.scrollArea.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAsNeeded)
        self.scrollArea.setHorizontalScrollBarPolicy(
            QtCore.Qt.ScrollBarAlwaysOff)
        self.scrollArea.setMaximumWidth(460)
        self.scrollArea.setMinimumHeight(600)
        self.scrollArea.setWidgetResizable(False)
        self.scrollArea.setWidget(self.containerWidget)

    def addNewSection(self):
        newSection = self.sectionClass(self.containerWidget)
        widgetPosition = len(self.sectionWidgets)
        self.layout.insertWidget(widgetPosition, newSection)
        self.sectionWidgets.append(newSection)
        self.setDefaultValues(newSection)

        self.widgetHeight += 80
        self.containerWidget.resize(460, self.widgetHeight)

        self.connect(newSection, QtCore.SIGNAL("remove()"), self.removeSection)
        self.connect(newSection, QtCore.SIGNAL("sizeValueChanged(QWidget*)"),
                     self.updateSumOfSize)

    def setDefaultValues(self, section):
        pass
        # section.colorLabel.setColor(SettingsCloud.getParameter("subsectionColor"))
        # self.setSectionSize(section)

    def setSectionSize(self, section):
        pass

    # def setSubsectionSize(self, section):
    #     if self.isLinacSection:
    #         defaultSize = SettingsCloud.getParameter("linacSubsectionSize")
    #     else:
    #         defaultSize = SettingsCloud.getParameter("ringSubsectionSize")
    #     section.sizeEdit.setValue(defaultSize)
    #     self.updateSumOfSize(section)

    def updateSumOfSize(self, sectionWidget):
        self.sumSize = 0
        for section in self.sectionWidgets:
            self.sumSize += section.getSize()
        if self.sumSize > 100:
            diff = self.sumSize - 100.0
            actualSize = sectionWidget.getSize()
            sectionWidget.setSize(actualSize - diff)

    def removeSection(self):
        messageBox = QMessageBox(self)
        userReply = messageBox.question(self, "Are you sure?",
                                        "Do you want to remove this section?",
                                        QMessageBox.Yes | QMessageBox.No)
        if userReply == QMessageBox.Yes:
            sender = self.sender()
            self.layout.removeWidget(sender)
            self.sectionWidgets.remove(sender)
            sender.setVisible(False)

            self.widgetHeight -= 80
            self.containerWidget.resize(460, self.widgetHeight)

    def getNumberOfSections(self):
        return len(self.sectionWidgets)

    def getSections(self):
        return self.sectionWidgets

    def getSectionsData(self):
        subsectionsData = list()
        for subsection in self.sectionWidgets:
            subsectionsData.append(subsection.getSectionData())
        return subsectionsData
コード例 #27
0
ファイル: focus_eval.py プロジェクト: JohnDMcMaster/uvscada
class TestGUI(QMainWindow):
    def __init__(self):
        QMainWindow.__init__(self)
        self.showMaximized()

        self.initUI()

        self.vid_fd = None

        # Must not be initialized until after layout is set
        self.gstWindowId = None
        #self.config_engine('gstreamer-testsrc')
        self.config_engine('gstreamer')

        self.processor = ImageProcessor()
        self.processor.n_frames.connect(self.n_frames.setNum)
        self.processor.processed.connect(self.refresh_image)
        self.capture_sink.img_cb = self.processor.img_cb

        self.processor.start()

        if self.gstWindowId:
            print "Starting gstreamer pipeline"
            self.player.set_state(gst.STATE_PLAYING)

    def config_engine(self, engine_config):
        if engine_config == 'gstreamer':
            self.source = gst.element_factory_make("v4l2src", "vsource")
            self.source.set_property("device", "/dev/video0")
            self.vid_fd = -1
            self.setupGst()
        elif engine_config == 'gstreamer-testsrc':
            print 'WARNING: using test source'
            self.source = gst.element_factory_make("videotestsrc", "video-source")
            self.setupGst()
        else:
            raise Exception('Unknown engine %s' % (engine_config,))

    def get_misc_layout(self):
        layout = QGridLayout()
        row = 0

        layout.addWidget(QLabel('N'), row, 0)
        self.n_frames = QLabel('0')
        layout.addWidget(self.n_frames, row, 1)
        row += 1

        return layout

    def refresh_image(self):
        self.pic.setPixmap(QPixmap("focus_eval.png"))
        self.pic.show()

    def get_left_layout(self):
        layout = QVBoxLayout()

        layout.addLayout(self.get_misc_layout())

        self.pic = QLabel(self)
        layout.addWidget(self.pic)

        return layout

    def get_video_layout(self):
        # Overview
        def low_res_layout():
            layout = QVBoxLayout()
            layout.addWidget(QLabel("Overview"))

            # Raw X-windows canvas
            self.video_container = QWidget()
            # Allows for convenient keyboard control by clicking on the video
            self.video_container.setFocusPolicy(Qt.ClickFocus)
            w, h = 3264/4, 2448/4
            self.video_container.setMinimumSize(w, h)
            self.video_container.resize(w, h)
            policy = QSizePolicy(QSizePolicy.Fixed, QSizePolicy.Fixed)
            self.video_container.setSizePolicy(policy)

            layout.addWidget(self.video_container)

            return layout

        layout = QHBoxLayout()
        layout.addLayout(low_res_layout())
        return layout

    def setupGst(self):
        print "Setting up gstreamer pipeline"
        self.gstWindowId = self.video_container.winId()

        self.player = gst.Pipeline("player")
        self.tee = gst.element_factory_make("tee")
        sinkx = gst.element_factory_make("ximagesink", 'sinkx_overview')
        fcs = gst.element_factory_make('ffmpegcolorspace')
        caps = gst.caps_from_string('video/x-raw-yuv')
        self.capture_enc = gst.element_factory_make("jpegenc")
        self.capture_sink = gst.element_factory_make("capturesink")
        self.capture_sink_queue = gst.element_factory_make("queue")
        self.resizer =  gst.element_factory_make("videoscale")

        # Video render stream
        self.player.add(      self.source, self.tee)
        gst.element_link_many(self.source, self.tee)

        self.player.add(fcs,                 self.resizer, sinkx)
        gst.element_link_many(self.tee, fcs, self.resizer, sinkx)

        self.player.add(                self.capture_sink_queue, self.capture_enc, self.capture_sink)
        gst.element_link_many(self.tee, self.capture_sink_queue, self.capture_enc, self.capture_sink)

        bus = self.player.get_bus()
        bus.add_signal_watch()
        bus.enable_sync_message_emission()
        bus.connect("message", self.on_message)
        bus.connect("sync-message::element", self.on_sync_message)

    def on_message(self, bus, message):
        t = message.type

        if self.vid_fd is not None and self.vid_fd < 0:
            self.vid_fd = self.source.get_property("device-fd")
            if self.vid_fd >= 0:
                print 'Initializing V4L controls'
                self.v4l_load()

        if t == gst.MESSAGE_EOS:
            self.player.set_state(gst.STATE_NULL)
            print "End of stream"
        elif t == gst.MESSAGE_ERROR:
            err, debug = message.parse_error()
            print "Error: %s" % err, debug
            self.player.set_state(gst.STATE_NULL)
            ''

    def v4l_load(self):
        return
        '''
        vconfig = uconfig["imager"].get("v4l2", None)
        if not vconfig:
            return
        for configk, configv in vconfig.iteritems():
            break
        #if type(configv) != dict or '"Gain"' not in configv:
        #    raise Exception("Bad v4l default config (old style?)")

        print 'Selected config %s' % configk
        for k, v in configv.iteritems():
            if k in self.ctrls:
                self.ctrls[k].setText(str(v))
            else:
                ctrl_set(self.vid_fd, k, v)
        '''

    def on_sync_message(self, bus, message):
        if message.structure is None:
            return
        message_name = message.structure.get_name()
        if message_name == "prepare-xwindow-id":
            if message.src.get_name() == 'sinkx_overview':
                print 'sinkx_overview win_id'
                win_id = self.gstWindowId
            else:
                raise Exception('oh noes')

            assert win_id
            imagesink = message.src
            imagesink.set_xwindow_id(win_id)

    def initUI(self):
        self.setGeometry(300, 300, 250, 150)
        self.setWindowTitle('pyv4l test')

        # top layout
        layout = QHBoxLayout()
        layout.addLayout(self.get_left_layout())
        layout.addLayout(self.get_video_layout())

        w = QWidget()
        w.setLayout(layout)
        self.setCentralWidget(w)
        self.show()
コード例 #28
0
ファイル: mainwindow.py プロジェクト: errendir/gui-tutorial
class MyWindow(QMainWindow):

    def __init__(self):
        # Initialize the super-class
        QMainWindow.__init__(self)

        # Set the icon
        self.setWindowIcon(QIcon("logo3.svg"))

        desktop = QtGui.QDesktopWidget()
        geom = desktop.availableGeometry()

        windowWidth = int(geom.width()/1.5)
        windowHeight = int(geom.height()/1.5)
        self.wh = QSize(windowWidth, windowHeight)

        # Restrict the resizing
        self.setMinimumSize(self.wh * 0.7)
        self.setSizeIncrement(QSize(30,30))

        # Resize and move to the middle of the screen
        self.resize(self.wh)
        self.move(int((geom.width()-windowWidth)/2.0), int((geom.height()-windowHeight)/2.0))
        self.setWindowTitle('The windowed application!')

        # Create the main widget of the window
        self.center = QWidget()
        self.layout().addWidget(self.center)

        # Create a grid layout to fit elements into
        self.center.setLayout(QGridLayout())

        # Add a button
        self.button = QPushButton(self)
        self.button.setText("This is a magic button!");
        self.button.resize(self.button.sizeHint());
        self.button.setFixedSize(self.button.sizeHint());

        self.center.layout().addWidget(self.button, 0, 1)

        self.button.clicked.connect(self.reaction)

        qDebug(str(self.sizeHint()))

    def sizeHint(self):
        return self.wh

    def reaction(self):
        qDebug("Button was clicked!")

    def closeEvent(self, event):
        # Call the method of the parent as well
        QMainWindow.closeEvent(self, event)

    def resizeEvent(self, event):
        # Resize the main widget
        self.center.resize(event.size())

        QMainWindow.resizeEvent(self, event)

    def moveEvent(self, event):
        #qDebug("Window moved!")
        print (event.pos().x(), event.pos().y())
        QMainWindow.moveEvent(self, event)
コード例 #29
0
ファイル: mainwindow.py プロジェクト: spirali/shampoo
class MainWindow(QMainWindow):

    def __init__(self, shampoo):
        super().__init__()
        self.setWindowTitle("Shampoo")
        self.resize(800, 400)
        #self.showMaximized()
        self.shampoo = shampoo
        self._create_central_widget()
        self._create_main_menu()

        self.case = None
        self.tree = None

    def set_case(self, case):
        self.case = case

        self.case.rebuild_scene.connect(self.rebuild_scene)

        self.tree = case.make_tree(self)
        self.tree.rebuild_scene.connect(self.rebuild_scene)
        self.treeview.setModel(self.tree)
        self.treeview.expandAll()
        self.treeview.selectionModel().currentChanged.connect(self._select_node)
        self.rebuild_scene()
        self.focus_on_node(self.tree)
        self.update_title()

    def select_node(self, node):
        layout = self.editwidget.layout()
        ui.qtutils.clean_layout(layout)
        node.make_editor(layout)
        layout.addSpacerItem(
                QSpacerItem(0, 0, QSizePolicy.Expanding, QSizePolicy.Expanding))

    def focus_on_node(self, node):
        items = []
        node.collect_render_items(items)
        bounding_box = BoundingBox()
        for item in items:
            bounding_box.add_box(item.bounding_box)
        if bounding_box.is_valid():
            self.glwidget.focus_on_bounding_box(bounding_box)

    def rebuild_scene(self):
        items = []
        self.tree.collect_render_items(items)
        self.glwidget.render_items = items
        self.glwidget.update()

    def update_title(self):
        if not self.case or not self.case.path:
            self.setWindowTitle("Shampoo")
        else:
            self.setWindowTitle("Shampoo - " + self.case.path)

    def _select_node(self, current, old):
        node = current.internalPointer()
        if node is None:
            return
        self.select_node(node)

    def _create_main_menu(self):
        menu = self.menuBar().addMenu("&Case")
        a = menu.addAction("&New")

        a = menu.addAction("&Open")
        a.triggered.connect(self.shampoo.open)

        a = menu.addAction("&Save")
        a.triggered.connect(self.shampoo.save)

        a = menu.addAction("Save &as")
        a.triggered.connect(self.shampoo.save_as)

        menu.addSeparator()
        a = menu.addAction("&Quit")
        a.triggered.connect(self.shampoo.app.quit)

        menu = self.menuBar().addMenu("&Options")
        a = menu.addAction("&Configure Shampoo")
        a.triggered.connect(self.shampoo.configure)

    def _create_central_widget(self):

        tabs = QTabWidget()

        splitter = QSplitter()
        self.treeview = QTreeView()
        self.treeview.header().hide()
        self.treeview.resize(500, 0)
        splitter.addWidget(self.treeview)

        self.editwidget = QWidget()
        self.editwidget.setLayout(QVBoxLayout())
        self.editwidget.resize(300, 300)
        self.editwidget.setMinimumSize(300, 100)
        splitter.addWidget(self.editwidget)

        self.glwidget = GLWidget()
        splitter.addWidget(self.glwidget)

        splitter.setStretchFactor(0, 2)
        splitter.setStretchFactor(1, 2)
        splitter.setStretchFactor(2, 4)

        tabs.addTab(splitter, "Mesh")

        tabs.addTab(self._create_run(), "Run")

        self.setCentralWidget(tabs)

    def _create_run(self):
        run = QSplitter()

        buttons = QWidget()
        layout = QVBoxLayout()
        buttons.setLayout(layout)

        button = QPushButton("Run blockMesh")
        button.clicked.connect(self.shampoo.run)
        layout.addWidget(button)

        button_terminate = QPushButton("Terminate")
        button_terminate.clicked.connect(self.shampoo.run)
        button_terminate.setEnabled(False)
        layout.addWidget(button_terminate)

        layout.addSpacerItem(
                QSpacerItem(0, 0, QSizePolicy.Expanding, QSizePolicy.Expanding))
        run.addWidget(buttons)

        self.console = Console()
        run.addWidget(self.console)
        return run
コード例 #30
0
ファイル: dum_hola.py プロジェクト: ver228/Work_In_Progress
from PyQt4.QtGui import QApplication, QWidget
import sys

if __name__ == '__main__':
    print('HOLA')
    
    app = QApplication(sys.argv)

    w = QWidget()
    w.resize(250, 150)
    w.move(300, 300)
    w.setWindowTitle('Simple')
    w.show()
    
    print('HOLA')
    sys.exit(app.exec_()) 
コード例 #31
0
    if button == QMessageBox.Ok:
        exit()

#防止多开
ERROR_ALREADY_EXISTS = 183
sz_mutex = "test_mutex"
hmutex = win32event.CreateMutex(None, pywintypes.FALSE, sz_mutex)
if (win32api.GetLastError() == ERROR_ALREADY_EXISTS):
    win32api.CloseHandle(hmutex)
    button = QMessageBox.warning(w, "Alert", u'请勿重复开启!', QMessageBox.Ok)
    if button == QMessageBox.Ok:
        exit()

#创建窗口
try:
    w.resize(250, 150)
    w.move(300, 300)
    w.setWindowTitle(u'By ddd')
    #窗口是否为置顶窗口
    #w.setWindowFlags(Qt.FramelessWindowHint|Qt.WindowStaysOnTopHint)
    w.setWindowFlags(Qt.FramelessWindowHint)

    label_k = QLabel(u'您输入的关键词:')
    label_r = QLabel(u'匹配的最佳结果:')
    label_fi = QLabel(u'近五年影响因子:')
    label_i = QLabel(u'最新的影响因子:')
    l_keywords = QLabel(u'')
    l_results = QLabel(u'')
    l_if = QLabel(u'')
    l_fiveif = QLabel(u'')
except:
コード例 #32
0
ファイル: manbal.py プロジェクト: PatchworkBoy/uvscada
class CNCGUI(QMainWindow):
    def __init__(self):
        QMainWindow.__init__(self)
        self.showMaximized()

        self.initUI()

        self.vid_fd = None
        
        # Must not be initialized until after layout is set
        self.gstWindowId = None
        engine_config = 'gstreamer'
        if engine_config == 'gstreamer':
            self.source = gst.element_factory_make("v4l2src", "vsource")
            self.source.set_property("device", "/dev/video0")
            self.vid_fd = -1
            self.setupGst()
        elif engine_config == 'gstreamer-testsrc':
            self.source = gst.element_factory_make("videotestsrc", "video-source")
            self.setupGst()
        else:
            raise Exception('Unknown engine %s' % (engine_config,))
        
        self.processor = ImageProcessor()
        self.processor.n_frames.connect(self.n_frames.setNum)
        self.processor.r_val.connect(self.r_val.setNum)
        self.processor.g_val.connect(self.g_val.setNum)
        self.processor.b_val.connect(self.b_val.setNum)
        self.processor.r_bal.connect(self.r_bal.setNum)
        self.processor.b_bal.connect(self.b_bal.setNum)
        self.capture_sink.img_cb = self.processor.img_cb
        
        self.processor.start()
        
        if self.gstWindowId:
            print "Starting gstreamer pipeline"
            self.player.set_state(gst.STATE_PLAYING)
        
    def get_video_layout(self):
        # Overview
        def low_res_layout():
            layout = QVBoxLayout()
            layout.addWidget(QLabel("Overview"))
            
            # Raw X-windows canvas
            self.video_container = QWidget()
            # Allows for convenient keyboard control by clicking on the video
            self.video_container.setFocusPolicy(Qt.ClickFocus)
            w, h = 3264/4, 2448/4
            self.video_container.setMinimumSize(w, h)
            self.video_container.resize(w, h)
            policy = QSizePolicy(QSizePolicy.Fixed, QSizePolicy.Fixed)
            self.video_container.setSizePolicy(policy)
            
            layout.addWidget(self.video_container)
            
            return layout
        
        layout = QHBoxLayout()
        layout.addLayout(low_res_layout())
        return layout

    def get_ctrl_layout(self):

        layout = QGridLayout()
        row = 0
        
        self.ctrls = {}
        for name in ("Red Balance", "Gain", "Blue Balance", "Exposure"):
            def textChanged(name):
                def f():
                    if self.vid_fd >= 0:
                        val = int(self.ctrls[name].text())
                        print '%s changed => %d' % (name, val)
                        ctrl_set(self.vid_fd, name, val)
                return f
        
            layout.addWidget(QLabel(name), row, 0)
            ctrl = QLineEdit('0')
            ctrl.textChanged.connect(textChanged(name))
            self.ctrls[name] = ctrl
            layout.addWidget(ctrl, row, 1)
            row += 1
        
        return layout
    
    def get_rgb_layout(self):

        layout = QGridLayout()
        row = 0
        
        layout.addWidget(QLabel('N'), row, 0)
        self.n_frames = QLabel('0')
        layout.addWidget(self.n_frames, row, 1)
        row += 1

        layout.addWidget(QLabel('R_V'), row, 0)
        self.r_val = QLabel('0')
        layout.addWidget(self.r_val, row, 1)
        row += 1

        layout.addWidget(QLabel('G_V'), row, 0)
        self.g_val = QLabel('0')
        layout.addWidget(self.g_val, row, 1)
        row += 1

        layout.addWidget(QLabel('B_V'), row, 0)
        self.b_val = QLabel('0')
        layout.addWidget(self.b_val, row, 1)
        row += 1
        
        layout.addWidget(QLabel('R_B'), row, 0)
        self.r_bal = QLabel('0')
        layout.addWidget(self.r_bal, row, 1)
        row += 1

        layout.addWidget(QLabel('B_B'), row, 0)
        self.b_bal = QLabel('0')
        layout.addWidget(self.b_bal, row, 1)
        row += 1
        
        return layout
    
    def setupGst(self):
        print "Setting up gstreamer pipeline"
        self.gstWindowId = self.video_container.winId()

        self.player = gst.Pipeline("player")
        self.tee = gst.element_factory_make("tee")
        sinkx = gst.element_factory_make("ximagesink", 'sinkx_overview')
        fcs = gst.element_factory_make('ffmpegcolorspace')
        caps = gst.caps_from_string('video/x-raw-yuv')
        self.capture_enc = gst.element_factory_make("jpegenc")
        self.capture_sink = gst.element_factory_make("capturesink")
        self.capture_sink_queue = gst.element_factory_make("queue")
        self.resizer =  gst.element_factory_make("videoscale")

        # Video render stream
        self.player.add(      self.source, self.tee)
        gst.element_link_many(self.source, self.tee)
        
        self.player.add(fcs,                 self.resizer, sinkx)
        gst.element_link_many(self.tee, fcs, self.resizer, sinkx)
        
        self.player.add(                self.capture_sink_queue, self.capture_enc, self.capture_sink)
        gst.element_link_many(self.tee, self.capture_sink_queue, self.capture_enc, self.capture_sink)

        bus = self.player.get_bus()
        bus.add_signal_watch()
        bus.enable_sync_message_emission()
        bus.connect("message", self.on_message)
        bus.connect("sync-message::element", self.on_sync_message)
    
    def on_message(self, bus, message):
        t = message.type
        
        if self.vid_fd is not None and self.vid_fd < 0:
            self.vid_fd = self.source.get_property("device-fd")
            if self.vid_fd >= 0:
                print 'Initializing V4L controls'
                for k, v in uconfig["imager"].get("v4l2", {}).iteritems():
                    if k in self.ctrls:
                        self.ctrls[k].setText(str(v))
                    else:
                        ctrl_set(self.vid_fd, k, v)
        
        if t == gst.MESSAGE_EOS:
            self.player.set_state(gst.STATE_NULL)
            print "End of stream"
        elif t == gst.MESSAGE_ERROR:
            err, debug = message.parse_error()
            print "Error: %s" % err, debug
            self.player.set_state(gst.STATE_NULL)
            ''

    def on_sync_message(self, bus, message):
        if message.structure is None:
            return
        message_name = message.structure.get_name()
        if message_name == "prepare-xwindow-id":
            if message.src.get_name() == 'sinkx_overview':
                print 'sinkx_overview win_id'
                win_id = self.gstWindowId
            else:
                raise Exception('oh noes')
            
            assert win_id
            imagesink = message.src
            imagesink.set_xwindow_id(win_id)
    
    def initUI(self):
        self.setGeometry(300, 300, 250, 150)
        self.setWindowTitle('pyv4l test')    
        
        # top layout
        layout = QHBoxLayout()
        
        layout.addLayout(self.get_ctrl_layout())
        layout.addLayout(self.get_rgb_layout())
        layout.addLayout(self.get_video_layout())
        
        w = QWidget()
        w.setLayout(layout)
        self.setCentralWidget(w)
        self.show()
コード例 #33
0
    print ("Hello, World!")

def selectMC():
    MC = QFileDialog.getOpenFileName()
    print unicode(MC, "utf-8", errors="ignore")
def selectGrades():
    handGraded = QFileDialog.getOpenFileName()
    print unicode(handGraded, "utf-8", errors="ignore")
    
# Instantiate the button
gradeButton = Qt.QPushButton("Grade",w)
myCursesButton = Qt.QPushButton("Selaa",w)
gradedButton = Qt.QPushButton("Selaa",w)

# And connect the action "sayHello" to the event "button has been clicked"
a.connect(gradeButton, Qt.SIGNAL("clicked()"), grade)

myCursesButton.clicked.connect(selectMC)
gradedButton.clicked.connect(selectGrades)

# The rest is known already...
#a.setMainWidget(hellobutton)
gradeButton.show()
 

w.resize(320, 240)  # The resize() method resizes the widget.
w.setWindowTitle("Mekaniikka")  # Here we set the title for our window.
w.show()  # The show() method displays the widget on the screen.

sys.exit(a.exec_())  # Finally, we enter the mainloop of the application.
コード例 #34
0
ファイル: mainwindow.py プロジェクト: LucaLanziani/bluepass
class MainWindow(QWidget):

    stylesheet = """
        QStatusBar { border: 0; }
        SearchEditor { height: 22px; background-color: white; }
        MenuButton { height: 22px; }
        MenuButton::menu-indicator { width: 0; }
        QLineEdit { height: 22px; }
    """

    def __init__(self):
        super(MainWindow, self).__init__()
        self.setObjectName('top')
        self.setWindowTitle('Bluepass')
        self.addWidgets()
        self.resize(300, 400)
        self.first = True
        self.setStyleSheet(self.stylesheet)
        self.vaultmgr = VaultManager(self)
        self.pairdlg = PairingApprovalDialog(self)

    def addWidgets(self):
        layout = QVBoxLayout()
        self.setLayout(layout)
        layout.setSpacing(0)
        layout.setContentsMargins(0, 0, 0, 0)
        hbox = QHBoxLayout()
        hbox.setSpacing(4)
        hbox.setContentsMargins(8, 8, 8, 2)
        searchbox = SearchEditor()
        hbox.addWidget(searchbox)
        self.searchbox = searchbox
        menu = MenuButton(self)
        hbox.addWidget(menu)
        layout.addLayout(hbox)
        pwview = VaultView(self)
        searchbox.textChanged.connect(pwview.setSearchQuery)
        pwview.currentVaultChanged.connect(searchbox.currentVaultChanged)
        pwview.currentVaultItemCountChanged.connect(searchbox.currentVaultItemCountChanged)
        layout.addWidget(pwview)
        self.pwview = pwview
        hbox = QHBoxLayout()
        addbutton = AddButton()
        pwview.currentVaultChanged.connect(addbutton.currentVaultChanged)
        hbox.addWidget(addbutton)
        frame = QFrame()
        frame.setFrameStyle(QFrame.VLine|QFrame.Raised)
        frame.setLineWidth(1)
        frame.setFixedHeight(26)
        hbox.addWidget(frame)
        statusbar = QStatusBar()
        hbox.addWidget(statusbar)
        self.statusbar = statusbar
        self.sink = QWidget()
        self.sink.setFocusPolicy(Qt.ClickFocus)
        self.sink.resize(0, 0)
        hbox.addWidget(self.sink)
        layout.addLayout(hbox)

    @Slot()
    def connectVault(self):
        vaultmgr = QApplication.instance().mainWindow().vaultManager()
        vaultmgr.setEnableNavigation(False)
        vaultmgr.showPage('ConnectVault')

    @Slot()
    def loseFocus(self):
        self.sink.setFocus()

    def showEvent(self, event):
        if not self.first:
            return
        self.loseFocus()
        self.pwview.loadVaults()
        self.first = False

    def showMessage(self, message):
        self.statusbar.showMessage(message, 10000)

    def passwordView(self):
        return self.pwview

    def vaultManager(self):
        return self.vaultmgr

    def showAbout(self):
        backend = QApplication.instance().backend()
        version_info = backend.get_version_info()
        text = '<p><b>Bluepass password manager, version %s</b></p>' \
               '<p>Bluepass is copyright (c) 2012-2013 Geert Jansen. ' \
               'Bluepass is free software available under the GNU General ' \
               'Public License, version 3. For more  information, see ' \
               '<a href="http://bluepass.org/">http://bluepass.org/</a>.</p>' \
               % version_info['version']
        QMessageBox.about(self, 'Bluepass', text)

    def showVaultManager(self, page='ManageVaults'):
        self.vaultmgr.reset()
        self.vaultmgr.showPage(page)

    def showPairingApprovalDialog(self, name, vault, pin, kxid, send_response):
        self.pairdlg.reset()
        self.pairdlg.getApproval(name, vault, pin, kxid, send_response)
コード例 #35
0
class SectionsContainerWidget(QWidget):
    def __init__(self, parent=None, isLinacSection=True, sectionClass=None):
        QWidget.__init__(self, parent)
        self.isLinacSection = isLinacSection
        self.sectionClass = sectionClass
        self.setParent(parent)
        self.sectionWidgets = list()
        self.setMinimumWidth(460)
        self.setMinimumHeight(600)
        self.sumSize = 0

        self.setupLayout()
        self.setupScrollArea()
        self.addSectionButton = QPushButton(self.containerWidget)
        self.addSectionButton.setText("Add new section")
        self.layout.addWidget(self.addSectionButton)

        self.connect(self.addSectionButton, QtCore.SIGNAL("clicked()"), self.addNewSection)

    def setupLayout(self):
        self.containerWidget = QWidget(self)
        self.widgetHeight = 120
        self.containerWidget.setGeometry(QRect(0,0,460,self.widgetHeight))

        self.layout = QVBoxLayout()
        self.containerWidget.setLayout(self.layout)

    def setupScrollArea(self):
        self.scrollArea = QScrollArea(self)
        self.scrollArea.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAsNeeded)
        self.scrollArea.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff)
        self.scrollArea.setMaximumWidth(460)
        self.scrollArea.setMinimumHeight(600)
        self.scrollArea.setWidgetResizable(False)
        self.scrollArea.setWidget(self.containerWidget)

    def addNewSection(self):
        newSection = self.sectionClass(self.containerWidget)
        widgetPosition = len(self.sectionWidgets)
        self.layout.insertWidget(widgetPosition, newSection)
        self.sectionWidgets.append(newSection)
        self.setDefaultValues(newSection)

        self.widgetHeight += 80
        self.containerWidget.resize(460,self.widgetHeight)

        self.connect(newSection, QtCore.SIGNAL("remove()"), self.removeSection)
        self.connect(newSection, QtCore.SIGNAL("sizeValueChanged(QWidget*)"), self.updateSumOfSize)

    def setDefaultValues(self, section):
        pass
        # section.colorLabel.setColor(SettingsCloud.getParameter("subsectionColor"))
        # self.setSectionSize(section)

    def setSectionSize(self, section):
        pass
    # def setSubsectionSize(self, section):
    #     if self.isLinacSection:
    #         defaultSize = SettingsCloud.getParameter("linacSubsectionSize")
    #     else:
    #         defaultSize = SettingsCloud.getParameter("ringSubsectionSize")
    #     section.sizeEdit.setValue(defaultSize)
    #     self.updateSumOfSize(section)

    def updateSumOfSize(self, sectionWidget):
        self.sumSize = 0
        for section in self.sectionWidgets:
            self.sumSize += section.getSize()
        if self.sumSize > 100:
            diff = self.sumSize - 100.0
            actualSize = sectionWidget.getSize()
            sectionWidget.setSize(actualSize - diff)

    def removeSection(self):
        messageBox = QMessageBox(self)
        userReply = messageBox.question(self, "Are you sure?", "Do you want to remove this section?",
                                        QMessageBox.Yes|QMessageBox.No)
        if userReply == QMessageBox.Yes:
            sender = self.sender()
            self.layout.removeWidget(sender)
            self.sectionWidgets.remove(sender)
            sender.setVisible(False)

            self.widgetHeight -= 80
            self.containerWidget.resize(460,self.widgetHeight)

    def getNumberOfSections(self):
        return len(self.sectionWidgets)

    def getSections(self):
        return self.sectionWidgets

    def getSectionsData(self):
        subsectionsData = list()
        for subsection in self.sectionWidgets:
            subsectionsData.append(subsection.getSectionData())
        return subsectionsData
コード例 #36
0
ファイル: emcap.py プロジェクト: ufwt/icfuzz
class GUI(QMainWindow):
    def __init__(self, prog):
        QMainWindow.__init__(self)
        self.showMaximized()

        self.prog = prog
        self.initUI()

        self.vid_fd = None

        # Must not be initialized until after layout is set
        self.gstWindowId = None
        engine_config = 'gstreamer'
        #engine_config = 'gstreamer-testsrc'
        if engine_config == 'gstreamer':
            self.source = gst.element_factory_make("v4l2src", "vsource")
            self.source.set_property("device", "/dev/video0")
            self.vid_fd = -1
            self.setupGst()
        elif engine_config == 'gstreamer-testsrc':
            print 'WARNING: using test source'
            self.source = gst.element_factory_make("videotestsrc", "video-source")
            self.setupGst()
        else:
            raise Exception('Unknown engine %s' % (engine_config,))

        ext = None
        if self.capture_enc:
            ext = {
                'jpegenc0': 'jpg',
            }[self.capture_enc.get_name()]
        self.processor = ImageProcessor(ext)
        self.capture_sink.img_cb = self.processor.img_cb

        self.processor.start()

        if self.gstWindowId:
            print "Starting gstreamer pipeline"
            self.player.set_state(gst.STATE_PLAYING)

    def get_video_layout(self):
        # Overview
        def low_res_layout():
            layout = QVBoxLayout()
            layout.addWidget(QLabel("Overview"))

            # Raw X-windows canvas
            self.video_container = QWidget()
            # Allows for convenient keyboard control by clicking on the video
            self.video_container.setFocusPolicy(Qt.ClickFocus)
            w, h = 3264/4, 2448/4
            self.video_container.setMinimumSize(w, h)
            self.video_container.resize(w, h)
            policy = QSizePolicy(QSizePolicy.Fixed, QSizePolicy.Fixed)
            self.video_container.setSizePolicy(policy)

            layout.addWidget(self.video_container)

            return layout

        layout = QHBoxLayout()
        layout.addLayout(low_res_layout())
        return layout

    def setupGst(self):
        print "Setting up gstreamer pipeline"
        self.gstWindowId = self.video_container.winId()

        self.player = gst.Pipeline("player")
        self.tee = gst.element_factory_make("tee")
        sinkx = gst.element_factory_make("ximagesink", 'sinkx_overview')
        fcs = gst.element_factory_make('ffmpegcolorspace')
        caps = gst.caps_from_string('video/x-raw-yuv')

        self.capture_enc = gst.element_factory_make("jpegenc")
        # not found
        #self.capture_enc = gst.element_factory_make("openjpegenc")
        #  error destination buffer too small
        #self.capture_enc = gst.element_factory_make("pngenc")
        # libv4l2: error converting / decoding frame data: v4l-convert: error destination buffer too small (16777216 < 23970816)
        #self.capture_enc = gst.element_factory_make("pnmenc")
        #self.capture_enc = None

        self.capture_sink = gst.element_factory_make("capturesink")
        self.capture_sink_queue = gst.element_factory_make("queue")
        self.resizer =  gst.element_factory_make("videoscale")

        # Video render stream
        self.player.add(      self.source, self.tee)
        gst.element_link_many(self.source, self.tee)

        self.player.add(fcs,                 self.resizer, sinkx)
        gst.element_link_many(self.tee, fcs, self.resizer, sinkx)

        if self.capture_enc:
            self.player.add(                self.capture_sink_queue, self.capture_enc, self.capture_sink)
            gst.element_link_many(self.tee, self.capture_sink_queue, self.capture_enc, self.capture_sink)
        else:
            self.player.add(                self.capture_sink_queue, self.capture_sink)
            gst.element_link_many(self.tee, self.capture_sink_queue, self.capture_sink)
        #self.player.add(                self.resizer, self.capture_enc, self.capture_sink)
        #gst.element_link_many(self.tee, self.resizer, self.capture_enc, self.capture_sink)

        bus = self.player.get_bus()
        bus.add_signal_watch()
        bus.enable_sync_message_emission()
        bus.connect("message", self.on_message)
        bus.connect("sync-message::element", self.on_sync_message)

    def on_message(self, bus, message):
        t = message.type

        if self.vid_fd is not None and self.vid_fd < 0:
            self.vid_fd = self.source.get_property("device-fd")
            if self.vid_fd >= 0:
                print 'Initializing V4L controls'
                self.v4l_load()

        if t == gst.MESSAGE_EOS:
            self.player.set_state(gst.STATE_NULL)
            print "End of stream"
        elif t == gst.MESSAGE_ERROR:
            err, debug = message.parse_error()
            print "Error: %s" % err, debug
            self.player.set_state(gst.STATE_NULL)
            ''

    def v4l_load(self):
        for k, v in uconfig.iteritems():
            print '%s => %s' % (k, v)
            ctrl_set(self.vid_fd, k, v)

    def on_sync_message(self, bus, message):
        if message.structure is None:
            return
        message_name = message.structure.get_name()
        if message_name == "prepare-xwindow-id":
            if message.src.get_name() == 'sinkx_overview':
                print 'sinkx_overview win_id'
                win_id = self.gstWindowId
            else:
                raise Exception('oh noes')

            assert win_id
            imagesink = message.src
            imagesink.set_xwindow_id(win_id)

    def initUI(self):
        self.setGeometry(300, 300, 250, 150)
        self.setWindowTitle('pyv4l test')

        # top layout
        layout = QHBoxLayout()
        layout.addLayout(self.get_video_layout())

        w = QWidget()
        w.setLayout(layout)
        self.setCentralWidget(w)
        self.show()
コード例 #37
0
def metronome():
    import os, sys, time
    from PyQt4.QtCore import SIGNAL
    from PyQt4.QtGui import QApplication, QPushButton, QSlider, QWidget
    from PyQt4.QtGui import QHBoxLayout, QLabel
    import synths

    START = False
    
    app = QApplication(sys.argv)
    if START:
        server = scsynth.server.start(verbose=True, spew=True)
    else:
        server = scsynth.server.connect(verbose=True, spew=True)
    engine = Engine(server, app, spew=True, quit_on_delete=START)
    server.sendMsg('/dumpOSC', 1)
    engine.tempoclock.set_tempo(120)

    SYNTHDEF_PATH = os.path.join(os.path.expanduser('~'),
                                 '.pksampler', 'synthdefs')
    SYNTHDEFS = ('JASStereoSamplePlayer.scsyndef',
                 'JASSine.scsyndef',
                 )
    for fname in SYNTHDEFS:
        engine.server.sendMsg('/d_load', os.path.join(SYNTHDEF_PATH, fname))
    
    FPATH = '/Users/patrick/.pksampler/clicks/click_1.wav'
    click = synths.Synth()
    click.name = 'JASStereoSamplePlayer'
    click['bufnum'] = engine.loader.load(FPATH)
    click['rateSCale'] = 1.2
    click['loopIt'] = 0
    time.sleep(.1)

    pattern = Pattern(beats=1)
    pattern.add(Note(0, 64, 69))
    pattern.synth = click
    stream = engine.insert(pattern)
    stream.loop(True)

    widget = QWidget()
    Layout = QHBoxLayout(widget)
    widget.resize(100, 250)
    widget.show()

    label = QLabel(widget)
    label.setText(str(engine.tempoclock.bpm))
    Layout.addWidget(label)
    
    def set_tempo(value):
        engine.tempoclock.set_tempo(value)
        label.setText(str(value))

    slider = QSlider(widget)
    slider.setRange(100, 180)
    slider.setValue(140)
    QObject.connect(slider, SIGNAL('valueChanged(int)'), set_tempo)
    Layout.addWidget(slider)

    button = QPushButton('quit', widget)
    QObject.connect(button, SIGNAL('clicked()'), app.quit)
    Layout.addWidget(button)

    engine.start()
    app.exec_()
    engine.stop()
コード例 #38
0
#! /usr/bin/env python3
# Character Encoding: UTF-8
#
# Here we provide the necessary imports.
# The basic GUI widgets are located in QtGui module. 
import sys
from PyQt4.QtGui import QApplication, QWidget

# Every PyQt4 application must create an application object.
# The application object is located in the QtGui module.
app = QApplication(sys.argv)

# The QWidget widget is the base class of all user interface objects in PyQt4.
# We provide the default constructor for QWidget. The default constructor has no parent.
# A widget with no parent is called a window. 
root = QWidget()

root.resize(320, 240)  # The resize() method resizes the widget.
root.setWindowTitle("Hello, World!")  # Here we set the title for our window.
root.show()  # The show() method displays the widget on the screen.

sys.exit(app.exec_())  # Finally, we enter the mainloop of the application.
コード例 #39
0
class SystemTrayIcon(QtGui.QSystemTrayIcon):
    key1 = 0

    def check_state(self):
        if self.w.windowState() == Qt.WindowMinimized:
            #print "Window is minimised. Restore it."
            try:  #used try so that if user pressed other than the given key error will not be shown
                if keyboard.is_pressed('ctrl'):  #if key 'q' is pressed
                    #print"ctrl"                if keyboard.is_pressed('k') and key==1:
                    #print "key"
                    key1 = 1
                    #self.w.setWindowState(Qt.WindowNoState)
                if keyboard.is_pressed('k') and key1 == 1:
                    #print "key"
                    key1 = 0
                    self.w.setWindowState(Qt.WindowNoState)
            except Exception as e:
                print "oops", e

    def updateIcon(self):

        self.w.show()

        #self.setIcon(QtGui.QIcon("Example2.ico"))

    def __init__(self, icon, parent=None):
        QtGui.QSystemTrayIcon.__init__(self, icon, parent)
        menu = QtGui.QMenu(parent)
        font = QtGui.QFont()
        font.setPointSize(12)
        #font.setBold(True)
        font.setWeight(75)
        changeicon = menu.addAction("Search")
        exitAction = menu.addAction("Exit")
        self.setContextMenu(menu)
        exitAction.triggered.connect(QtGui.qApp.quit)
        changeicon.triggered.connect(self.updateIcon)

        #the po up windows
        self.w = QWidget()
        x = 0
        y = 0
        ##        try:
        ##            user32 = ctypes.windll.user32
        ##            screensize = user32.GetSystemMetrics(0), user32.GetSystemMetrics(1)
        ##            platforms=platform.system()
        ##            if(platforms=="Windows"):
        ##                x=1500
        ##                y=800
        ####                x=screensize[0]-300
        ####                y=screensize[1]-504
        ##                #print x,y
        ##            else:
        ##                x=1500
        ##                y=800
        ##        except Exception as e:
        ##            print "exception",str(e)
        x = 1250
        y = 200
        #print x,y
        self.w.move(x, y)
        self.w.setWindowTitle('infomind_search_BOT')
        self.w.resize(650, 730)
        button = QPushButton('Search', self.w)
        button.move(560, 630)
        button.resize(80, 80)

        button2 = QtGui.QPushButton(self.w)
        icon2 = QIcon("images/if_08_171506.png")
        button2.setIcon(icon2)

        button2.move(520, 630)
        button2.resize(30, 30)

        #the borowser box
        browser = QTextBrowser(self.w)
        browser.setHtml("""     <!DOCTYPE html>
                                <html>
                                <style>
                                body {g
                               background-color: #ffffff;
                                }
                                </style>
                                <body></body>
                                </html>
                                """)
        browser.move(20, 20)
        browser.resize(620, 600)

        textbox = QTextEdit(self.w)
        textbox.move(20, 630)
        ##        textbox.wordWrapMode(True)
        textbox.resize(490, 80)
        paste_text = clipboard.paste()
        if (paste_text):
            paste_text = str(paste_text)
            #print "paste data",paste_text
            textbox.setText(paste_text)

        def rec_paste():

            response = ""
            textString = QtCore.QString("""<style>
                    .cll{background-color: #F4FD59    ;color: #000000;float:right;font-family: Trebuchet; font-size: 12px;margin-left:10px;font-weight: lighter;text-align: right; }
                    .time{font-size: 11px ;vertical-align:bottom;color: #999999;}
                    
                                   </style>
                                   <table><tr><td></br></br></td></tr></table>
                               <table  class="cll">
                               <tr>
                                    <td>
                                        Bot: Say something! </td>
                                    <td class="time" > <br>""" +
                                        time.strftime('%I:%M %p') +
                                        """</td>           
                               </tr>
                                 </table>
        <table><tr><td></br></br></td></tr></table>""")
            #print textString
            browser.append(textString)
            time.sleep(5)
            r = sr.Recognizer()
            with sr.Microphone() as source:
                r.adjust_for_ambient_noise(source, duration=1)
                print("Say something!")

                audio = r.listen(source, phrase_time_limit=5)
                # recognize speech using Sphinx/Google
            try:
                response = r.recognize_google(audio)
                print(" you said '" + response + "'")
                textString = QtCore.QString("""<style>
                    .cll{background-color: #F4FD59    ;color: #000000;float:right;font-family: Trebuchet; font-size: 12px;margin-left:10px;font-weight: lighter;text-align: right; }
                    .time{font-size: 11px ;vertical-align:bottom;color: #999999;}
                    
                                   </style>
                                   <table><tr><td></br></br></td></tr></table>
                               <table  class="cll">
                               <tr>
                                    <td>
                                        Bot: I think you said """ + response +
                                            "'" + """ </td>
                                    <td class="time" > <br>""" +
                                            time.strftime('%I:%M %p') +
                                            """</td>           
                               </tr>
                                 </table>
        <table><tr><td></br></br></td></tr></table>""")
                #print textString
                browser.append(textString)
            except sr.UnknownValueError:
                print("Sorry could not understand audio")
            except sr.RequestError as e:
                print("Sorry error; {0}".format(e))
            textbox.setText(response)

        def on_click():
            #textbox.setText("Button clicked.")
            #print (dir(textbox))
            text = unicode(textbox.toPlainText())
            ##            print text
            ##            print len(text)
            ##            print(not text)
            if (not (not text)):
                textString = QtCore.QString("""<style>
                                .container {background-color: #ADFB42  ;width: 100%;color: #000000;float: left;margin-right:40px;font-family:Trebuchet;font-size: 15px ;
                                font-weight: lighter;text-align: left; }
                           .time{font-size: 11px ;vertical-align:bottom;color: #999999;}
                           </style>
                    <table  class="container" style='overflow-x:scroll;height:100px;display:block;'>
                       <tr>
                        <td>
                         Me :  """ + text + """ <td class="time" ></br>""" +
                                            time.strftime('%I:%M %p') +
                                            """</td>
                        </td>
                       </tr>   
                    </table>
                    <table><tr><td><br></td></tr></table>""")
                browser.append(textString)

                ##                return_Res=answers(text)
                ##                print return_Res
                ##                print dir(return_Res)

                ##                #return_Res="hello how can i help you today"
                infy = 0.000000  # equalant to - neg infinty
                ans_id = 0
                text1 = text
                for index, row in df1.iterrows():
                    #print row['id'], row['Title']
                    text2 = row['Title']

                    vector1 = text_to_vector(text1)
                    vector2 = text_to_vector(text2)
                    cosine = get_cosine(vector1, vector2)
                    if (cosine > infy):
                        ans_id = row['id']

                        infy = cosine
                print ans_id
                a = (df1.loc[[ans_id - 1]])
                return_Res = (a.iloc[0]['Resolution'])

                ##                print dir(return_Res)
                return_Res2 = str(return_Res)
                #</code>
                return_Res2 = return_Res.replace('</code>', "")

                return_Res = return_Res2.replace("\n", " ")
                clipboard.copy(return_Res)

                if ('\n' in return_Res2):
                    print "found"

                #print return_Res2
                textString = QtCore.QString("""<style>
                    .cll{background-color: #F4FD59    ;color: #000000;float:right;font-family: Trebuchet; font-size: 12px;margin-left:10px;font-weight: lighter;text-align: right; }
                    .time{font-size: 11px ;vertical-align:bottom;color: #999999;}
                    
                                   </style>
                                   <table style='overflow-x:auto;'><tr><td></br></br></td></tr></table>
                               <table  class="cll">
                               <tr>
                                    <td>
                                        Bot:""" + return_Res2 + """ </td>
                                    <td class="time" > <br>""" +
                                            time.strftime('%I:%M %p') +
                                            """</td>           
                               </tr>
                                 </table>
        <table><tr><td><br></br></td></tr></table>""")
                #print textString '<pre><code>print("Hello, World!")<br /></code></pre><br /><br />'
                return_Res2 = (str(return_Res2))
                lst = [
                    "//>", "</pre>", "<code><pre>", "<code>", "<pre>",
                    "</code>", "</>"
                ]
                ##
                return_Res2 = ' '.join(x for x in return_Res2.split(' ')
                                       if x not in lst)

                return_Res2 = return_Res2.replace('<br />', "\n",
                                                  len(return_Res2))
                return_Res2 = return_Res2.replace('</code>', "",
                                                  len(return_Res2))
                return_Res2 = return_Res2.replace('<code>', "",
                                                  len(return_Res2))
                return_Res2 = return_Res2.replace('</pre>', "",
                                                  len(return_Res2))
                return_Res2 = return_Res2.replace('<pre>', "",
                                                  len(return_Res2))
                ##                return_Res2=return_Res.replace('</code>',"",len(return_Res2))
                ##                return_Res2=return_Res.replace('\n'," ",len(return_Res2))
                ##                return_Res2=return_Res.replace('<br /> '," ",len(return_Res2))
                ##                return_Res2=return_Res.replace("<br />"," ",len(return_Res2))
                ##                return_Res2=return_Res.replace('</pre>',"",len(return_Res2))
                ##                return_Res2=return_Res.replace('<pre>',"",len(return_Res2))
                ##                return_Res2=return_Res.replace('<code>',"",len(return_Res2))
                ##                return_Res2=re.sub('<br /> ', '', return_Res2)
                ##                lst=["<br /> ","<br />","<br","//>","<br />","<code>","<pre>","</code>","</>"]
                ##
                ##                return_Res2=' '.join(x for x in return_Res2.split(' ') if x not in lst)

                print return_Res2
                print "##################################"

                browser.append(textString)
            else:
                textString = QtCore.QString("""<style>
                    .cll{background-color: #F4FD59    ;color: #000000;font-family: Trebuchet; font-size: 15px;margin-left:60px;font-weight: lighter;text-align: right; }
                    .time{font-size: 11px ;vertical-align:bottom;color: #999999;}
                                   </style>
                                   
                                   <table ><tr><td></br></br></td></tr></table>
                               <table  class="cll">
                               <tr>
                                    <td>
                                        Bot:Please enter search query </td>
                                        <td class="time" > """ +
                                            time.strftime('%I:%M %p') +
                                            """</td>          
                               </tr>
                                 </table>
        <table><tr><td><br><br></td></tr></table> <br><br>""")

                browser.append(textString)

            #print text

        button.clicked.connect(on_click)
        button2.clicked.connect(rec_paste)

        self.timer = QTimer()
        self.timer.setInterval(100)
        self.timer.timeout.connect(self.check_state)
        self.timer.start()
コード例 #40
0
ファイル: display.py プロジェクト: setrofim/billboard
class BillboardDisplay(QMainWindow):

    def __init__(self, parent=None, workdir=None, fontsize=42):
        super(BillboardDisplay, self).__init__(parent)
        self.workdir = workdir
        self.logger = logging.getLogger('display')
        self.logger.info('Working directory: {}'.format(self.workdir))
        self.current_display = os.path.join(self.workdir, 'current.jpg')
        desktop = QDesktopWidget()
        self.display = QWidget(self)
        size  = desktop.availableGeometry(desktop.primaryScreen());
        self.display.resize(size.width(), size.height())
        self.display.setWindowTitle("Billboard")

        self.image_label = QLabel(self.display)
        self.image_label.resize(size.width(), size.height())

        self.text_label = QLabel(self.display)
        self.text_label.resize(size.width(), size.height())
        self.text_label.setMargin(100)
        self.text_label.setStyleSheet('''
            QLabel {{
                        font-size: {}pt;
                        font-weight: bold;
                        color: #eeeeee;
                        text-align: center;
                    }}
        '''.format(fontsize))
        self.text_label.setWordWrap(True)
        self.text_label.setAlignment(Qt.AlignCenter)

        dse = QGraphicsDropShadowEffect()
        dse.setBlurRadius(0)
        dse.setXOffset(5)
        dse.setYOffset(5)
        dse.setColor(QColor(0, 0, 0, 255))
        self.text_label.setGraphicsEffect(dse)
        QObject.connect(self, SIGNAL("updateimage"),
                        self.display_image)
        QObject.connect(self, SIGNAL("updatecurrent"),
                        self.take_screenshot)

    def update_image(self, imagepath):
        self.emit(SIGNAL("updateimage"), imagepath)

    def update_current(self):
        self.emit(SIGNAL("updatecurrent"), self.current_display)

    def display(self, imagepath, text):
        self.display_text(text)
        self.display_image(imagepath)
        self.showFullScreen()

    def display_image(self, imagepath):
        pix = QPixmap(imagepath)
        self.image_label.setPixmap(pix.scaled(self.display.size(),
                                              Qt.KeepAspectRatioByExpanding))

    def display_text(self, text):
        self.text_label.setText('"{}"'.format(text))

    def take_screenshot(self, path):
        pixmap = QPixmap(QPixmap.grabWidget(self.display))
        pixmap.save(path)
        self.logger.debug('Saving {}'.format(path))
コード例 #41
0
ファイル: childwidget.py プロジェクト: IMAGE-ET/dicomimport
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
"""

import sys
from PyQt4.QtGui import QApplication, QPushButton, QWidget

if __name__ == "__main__":

    app = QApplication(sys.argv)
    window = QWidget()
    window.resize(480, 360)
    window.show()
    
    button = QPushButton("Press me", window)
    button.move(200, 200)
    button.show()
    
    sys.exit(app.exec_())
コード例 #42
0
    groupby = latest.groupby(["task"])
    top = groupby.aggregate({'timestamp': [np.min, np.max]})
    top.columns = top.columns.droplevel(0)  # put the headers back
    top_sorted = top.sort_values(by="amax", ascending=False).head(n=15)
    return top_sorted


# create our window
app = QApplication(sys.argv)
app.setWindowIcon(QIcon(app_path + 'task_tracker.png'))
w = QWidget()
w.setWindowTitle('Task Tracker')


# Set window size.
w.resize(280, 230)

# Create textbox
textbox = QLineEdit(w)
textbox.move(20, 20)
textbox.resize(240, 30)

# Create a button in the window
button = QPushButton('Add', w)
button.move(20, 60)

# Create a button in the window
button_dir = QPushButton('data', w)
button_dir.move(170, 60)

# Create a button in the window
コード例 #43
0
 def Adjust(widget: QtGui.QWidget) -> int:
     h = widget.minimumHeight() + addHeight
     assert h > 0
     widget.setMinimumHeight(h)
     widget.setMaximumHeight(h)
     widget.resize(widget.width(), h)
コード例 #44
0
class parcial(QWidget):

    def __init__(self):
        
        self.ingresar = QApplication(sys.argv)
        super(parcial, self).__init__(None)
        self.contador = 0
        self.ingreso = QWidget()
        self.ingreso.resize(440, 320)
        self.ingreso.setWindowTitle('Autenticacion de Ingreso')
        
        self.sistema = QWidget()
        self.sistema.resize(480, 320)
        self.sistema.setWindowTitle('Identificador de Numeros Telefonicos')

    def inicio(self, u = 0, c = 0):
        
        self.imaje = QLabel(self.ingreso)
        self.imaje.setGeometry(10,10,225,225)
        self.imaje.setPixmap(QPixmap("logo.png"))
        
        self.u = QLabel('Nombre de Usuario:',self.ingreso)
        self.u.move(288,162)
        
        self.c = QLabel('Clave:',self.ingreso)
        self.c.move(333,202)
        
        self.m = QLabel('Usuario y(o) Clave Incorrecta', self.ingreso)
        self.m.move(250,303)
        self.m.hide()
        
        self.User = QLineEdit(self.ingreso)
        self.User.setGeometry(280, 180, 140, 20)
        
        self.Pass = QLineEdit(self.ingreso)
        self.Pass.setGeometry(280, 220, 140, 20)
        key = self.Pass
        key.setEchoMode(self.Pass.Password)
        
        self.entra = QPushButton('Entrar', self.ingreso)
        self.entra.setGeometry(320, 260, 60, 30)
        
        self.ingreso.connect(self.entra, SIGNAL('clicked()'), lambda: self.revisar(self.User, self.Pass))
        
        self.ingreso.show()
        
        sys.exit(self.ingresar.exec_())
        
        
    def revisar(self, user, passw, flag = 0):
        
        u = user.text()
        c = passw.text()
        ce = base64.b64encode(str(c))

        login = open('usuarios.txt', 'rU')
        for i in login:
            n = i.split(',')

            if (n[1] == u and n[4] == ce):
                flag = 1
                self.m.hide()
                m = menu()
                m.exec_()
                break
            elif (n[1] == u and n[4] != ce):
                self.contador += 1
                flag = 0
                self.m.show()
                if self.contador == 3:
                    bloqueado = open('bloqueados.txt', 'a')
                    bloqueado.write(i)
                    bloqueado.close()
        if flag == 0:
            self.m.show()
        
        d = strftime('%d/%m/%y')
        h = strftime('%H:%M:%S')
                            		
        conn = psycopg2.connect(database='test',user='******',password='******', host='localhost')
        cur = conn.cursor()
        cur.execute("INSERT INTO accesos (nombre, usuario, fecha, hora) VALUES ('"+n[0]+"','"+n[1]+"','"+d+"','"+h+"')")
        conn.commit()
        conn.close()

        login.close()
        entrada = open('ingreso.txt', 'a')
        entrada.write('Ha Ingresado '+n[1]+' Hoy '+d+' a las '+h+'\n')
        entrada.close()
コード例 #45
0
    def initGui(self):
        """
        Initialize the GUI.
        """
        self.resize(self._init_window_width, self._init_window_height)
        grid = QGridLayout(self)
        grid.setSpacing(10)

        ### Functions.
        group_func = QGroupBox(self)
        font = group_func.font()
        font.setPointSize(self._font_size_groupbox_title)
        group_func.setFont(font)
        group_func.resize(400, 100)
        grid_func = QGridLayout(group_func)
        grid_func.setSpacing(10)

        # Some buttons.
        self._is_bp = self.kwargs.get("bp", True)
        if self._is_bp:
            self.bp = QPushButton(group_func)
            self.bp.setText("Start plotting")
            self.bp.clicked.connect(self.pushButton)

        # Some options.
        label_logscale = QLabel(group_func)
        label_logscale.setText("Log")

        self.checkbox_logscale = QCheckBox(group_func)

        # Construct.
        if self._is_bp:
            grid_func.addWidget(self.bp, 0, 0, 1, 1)
        grid_func.addWidget(label_logscale, 0, 1)
        grid_func.addWidget(self.checkbox_logscale, 0, 2)

        ### Coordinate and Value of the mouse pointer.
        widget_coor_value = QWidget(self)
        widget_coor_value.resize(self._init_window_width, 30)
        grid_coor_value = QGridLayout(widget_coor_value)
        grid_coor_value.setSpacing(10)

        label_coor_value = QLabel(self)
        label_coor_value.setText("Coor, Value:")
        label_coor_value.setAlignment(Qt.AlignRight)
        # label_coor_value.setFixedWidth(120)
        font = label_coor_value.font()
        font.setPointSize(self._font_size_groupbox_title)
        font.setBold(True)
        label_coor_value.setFont(font)

        self.label_coor_value = QLabel(self)
        # self.label_coor_value.setFixedSize(200, 30)
        self.label_coor_value.setText("")
        font = self.label_coor_value.font()
        font.setPointSize(self._font_size_groupbox_title)
        font.setBold(True)
        self.label_coor_value.setFont(font)

        # Construct.
        grid_coor_value.addWidget(label_coor_value, 0, 0)
        grid_coor_value.addWidget(self.label_coor_value, 0, 1, 1, 3)

        ### Plotting area.
        self.initPlotArea()

        ### Construct the layout.
        grid.addWidget(group_func, 0, 0)
        grid.addWidget(self.glw, 1, 0)
        grid.addWidget(widget_coor_value, 1, 0)
コード例 #46
0
class MainWindow(QWidget):

    stylesheet = """
        QStatusBar { border: 0; }
        SearchEditor { height: 22px; background-color: white; }
        MenuButton { height: 22px; }
        MenuButton::menu-indicator { width: 0; }
        QLineEdit { height: 22px; }
    """

    def __init__(self):
        super(MainWindow, self).__init__()
        self.setObjectName('top')
        self.setWindowTitle('Bluepass')
        self.addWidgets()
        self.resize(300, 400)
        self.first = True
        self.setStyleSheet(self.stylesheet)
        self.vaultmgr = VaultManager(self)
        self.pairdlg = PairingApprovalDialog(self)

    def addWidgets(self):
        layout = QVBoxLayout()
        self.setLayout(layout)
        layout.setSpacing(0)
        layout.setContentsMargins(0, 0, 0, 0)
        hbox = QHBoxLayout()
        hbox.setSpacing(4)
        hbox.setContentsMargins(8, 8, 8, 2)
        searchbox = SearchEditor()
        hbox.addWidget(searchbox)
        self.searchbox = searchbox
        menu = MenuButton(self)
        hbox.addWidget(menu)
        layout.addLayout(hbox)
        pwview = VaultView(self)
        searchbox.textChanged.connect(pwview.setSearchQuery)
        pwview.currentVaultChanged.connect(searchbox.currentVaultChanged)
        pwview.currentVaultItemCountChanged.connect(
            searchbox.currentVaultItemCountChanged)
        layout.addWidget(pwview)
        self.pwview = pwview
        hbox = QHBoxLayout()
        addbutton = AddButton()
        pwview.currentVaultChanged.connect(addbutton.currentVaultChanged)
        hbox.addWidget(addbutton)
        frame = QFrame()
        frame.setFrameStyle(QFrame.VLine | QFrame.Raised)
        frame.setLineWidth(1)
        frame.setFixedHeight(26)
        hbox.addWidget(frame)
        statusbar = QStatusBar()
        hbox.addWidget(statusbar)
        self.statusbar = statusbar
        self.sink = QWidget()
        self.sink.setFocusPolicy(Qt.ClickFocus)
        self.sink.resize(0, 0)
        hbox.addWidget(self.sink)
        layout.addLayout(hbox)

    @Slot()
    def connectVault(self):
        vaultmgr = QApplication.instance().mainWindow().vaultManager()
        vaultmgr.setEnableNavigation(False)
        vaultmgr.showPage('ConnectVault')

    @Slot()
    def loseFocus(self):
        self.sink.setFocus()

    def showEvent(self, event):
        if not self.first:
            return
        self.loseFocus()
        self.pwview.loadVaults()
        self.first = False

    def showMessage(self, message):
        self.statusbar.showMessage(message, 10000)

    def passwordView(self):
        return self.pwview

    def vaultManager(self):
        return self.vaultmgr

    def showAbout(self):
        backend = QApplication.instance().backend()
        version_info = backend.get_version_info()
        text = '<p><b>Bluepass password manager, version %s</b></p>' \
               '<p>Bluepass is copyright (c) 2012-2013 Geert Jansen. ' \
               'Bluepass is free software available under the GNU General ' \
               'Public License, version 3. For more  information, see ' \
               '<a href="http://bluepass.org/">http://bluepass.org/</a>.</p>' \
               % version_info['version']
        QMessageBox.about(self, 'Bluepass', text)

    def showVaultManager(self, page='ManageVaults'):
        self.vaultmgr.reset()
        self.vaultmgr.showPage(page)

    def showPairingApprovalDialog(self, name, vault, pin, kxid, send_response):
        self.pairdlg.reset()
        self.pairdlg.getApproval(name, vault, pin, kxid, send_response)
コード例 #47
0
ファイル: show_project.py プロジェクト: koson/CodeLab
# coding=utf-8
# A simple demonstration of how to load a QGIS project and then
# show it in a widget.
# This code is public domain, use if for any purpose you see fit.
# Tim Sutton 2015
import os
from qgis.core import QgsProject
from qgis.gui import QgsMapCanvas, QgsLayerTreeMapCanvasBridge
from qgis.core.contextmanagers import qgisapp
from PyQt4.QtCore import QFileInfo, QSize
from PyQt4.QtGui import QWidget, QVBoxLayout
with qgisapp():
    #project_path = os.path.dirname(__file__) + os.path.sep + 'i:/loadqgisprojectPY/test.qgs'
    project_path = 'i:/loadqgisprojectPY/test.qgs'
    print(project_path)
    widget = QWidget()
    canvas = QgsMapCanvas(None)  # will reparent it to widget via layout
    widget.resize(QSize(400, 400))
    layout = QVBoxLayout(widget)
    layout.addWidget(canvas)
    # Load our project
    bridge = QgsLayerTreeMapCanvasBridge(QgsProject.instance().layerTreeRoot(),
                                         canvas)
    QgsProject.instance().read(QFileInfo(project_path))
    widget.show()
コード例 #48
0
class parcial(QWidget):
    def __init__(self):

        self.ingresar = QApplication(sys.argv)
        super(parcial, self).__init__(None)

        self.ingreso = QWidget()
        self.ingreso.resize(440, 320)
        self.ingreso.setWindowTitle('Autenticacion de Ingreso')

        self.sistema = QWidget()
        self.sistema.resize(480, 320)
        self.sistema.setWindowTitle('Identificador de Numeros Telefonicos')

    def inicio(self, u=0, c=0):

        self.imaje = QLabel(self.ingreso)
        self.imaje.setGeometry(10, 10, 225, 225)
        self.imaje.setPixmap(QPixmap(getcwd() + "/logo.gif"))

        self.u = QLabel('Nombre de Usuario:', self.ingreso)
        self.u.move(288, 162)

        self.c = QLabel('Clave:', self.ingreso)
        self.c.move(333, 202)

        self.m = QLabel('Usuario y(o) Clave Incorrecta', self.ingreso)
        self.m.move(250, 303)
        self.m.hide()

        self.User = QLineEdit(self.ingreso)
        self.User.setGeometry(280, 180, 140, 20)

        self.Pass = QLineEdit(self.ingreso)
        self.Pass.setGeometry(280, 220, 140, 20)

        self.entra = QPushButton('Entrar', self.ingreso)
        self.entra.setGeometry(320, 260, 60, 30)

        self.ingreso.connect(self.entra, SIGNAL('clicked()'),
                             lambda: self.revisar(self.User, self.Pass))

        self.ingreso.show()

        sys.exit(self.ingresar.exec_())

    def revisar(self, user, passw, flag=0):

        u = user.text()
        c = passw.text()
        #print u+''+c
        login = open('login.txt', 'rU')
        for i in login:
            if i == u + ',' + c + '\n':
                flag = 1
                self.m.hide()
                m = menu()
                m.exec_()

        if flag == 0:
            self.m.show()

        self.ingreso.update()
        login.close()
コード例 #49
0
class previewDlg(QMainWindow):
    '''
    classdocs
    '''
    def __init__(self, parent, comp, basePMCheck, model):
        '''
        Constructor
        '''

        QMainWindow.__init__(self, parent)

        self.basePMCheck = basePMCheck
        #         self.ui = Ui_Previewself.grbPageProperty()
        #         self.ui.setupUi(self)
        self.resize(1000, 700)
        self.setWindowTitle("Preview Dialog")
        self.view = QgsComposerView(self)
        viewLayout = QGridLayout()
        viewLayout.setSpacing(0)
        viewLayout.setMargin(0)
        mHorizontalRuler = QgsComposerRuler(QgsComposerRuler.Horizontal)
        mVerticalRuler = QgsComposerRuler(QgsComposerRuler.Vertical)
        mRulerLayoutFix = QWidget()
        mRulerLayoutFix.setAttribute(Qt.WA_NoMousePropagation)
        mRulerLayoutFix.setBackgroundRole(QPalette.Window)
        mRulerLayoutFix.setFixedSize(mVerticalRuler.rulerSize(),
                                     mHorizontalRuler.rulerSize())
        viewLayout.addWidget(mRulerLayoutFix, 0, 0)
        viewLayout.addWidget(mHorizontalRuler, 0, 1)
        viewLayout.addWidget(mVerticalRuler, 1, 0)

        self.view.setContentsMargins(0, 0, 0, 0)
        self.view.setHorizontalRuler(mHorizontalRuler)
        self.view.setVerticalRuler(mVerticalRuler)
        viewLayout.addWidget(self.view, 1, 1)

        #         self.scene = comp

        self.view.setZoomLevel(1.0)
        self.view.setComposition(comp)
        self.scene = self.view.composition()
        layout = QVBoxLayout()
        hLayout = QHBoxLayout()
        hLayout.addLayout(viewLayout)

        self.mapItem = self.scene.getComposerMapById(0)

        self.view.scale(2.8, 2.8)
        self.view.setPreviewModeEnabled(True)

        self.toolBarAction = self.addToolBar("composer action")
        self.actionMapRefresh = QAction(self)
        self.actionMapRefresh.setObjectName("actionMapRefresh")
        icon3 = QIcon("Resource/Refresh.png")
        self.actionMapRefresh.setIcon(icon3)
        self.actionMapRefresh.setToolTip("Refresh")
        # self.textItemAction.setCheckable(True)
        self.connect(self.actionMapRefresh, SIGNAL("triggered()"),
                     self.actionMapRefresh_triggered)
        self.toolBarAction.addAction(self.actionMapRefresh)

        # # self.templeteCreateAction = QAction(self)
        # # self.templeteCreateAction.setObjectName("createTempleteAction")
        # # icon4 = QIcon("Resource\\templetepointer.png")
        # # self.templeteCreateAction.setIcon(icon4)
        # # self.templeteCreateAction.setToolTip("Create Templete")
        # # self.templeteCreateAction.setCheckable(True)
        # # self.connect(self.templeteCreateAction, SIGNAL("triggered()"), self.createTempleteAction)
        # # self.toolBar.addAction(self.templeteCreateAction)
        # layout.insertWidget(0, self.toolBar)

        #         self.scene.selectedItemChanged.connect(self.selectedItemDisplay)
        self.view.selectedItemChanged.connect(self.selectedItemDisplay)

        self.view.cursorPosChanged.connect(self.cursorPosChangedEvent)
        #         self.connect(self.view, SIGNAL("selectedItemChanged(QgsComposerItem)"),self, SLOT("selectedItemDisplay(QgsComposerItem)"))
        #         self.scene.composerLabelAdded.connect(self.composerLabelAddedEvent)
        self.view.itemRemoved.connect(self.deleteItem)
        # self.connect( self.view, SIGNAL( "actionFinished()" ), self.setSelectionTool)

        #listen out for position updates from the QgsComposerView
        self.propertyWidget = QWidget(self)
        hLayout.addWidget(self.propertyWidget)
        self.propertyWidget.setObjectName("propertyWidget")
        self.propertyWidget.resize(222, 302)
        self.vLayout_3 = QVBoxLayout(self.propertyWidget)
        self.vLayout_3.setObjectName("vLayout_3")
        self.groupBox = QGroupBox(self.propertyWidget)
        self.groupBox.setObjectName("groupBox")
        self.horizontalLayout_2 = QHBoxLayout(self.groupBox)
        self.horizontalLayout_2.setObjectName("horizontalLayout_2")
        self.frame = QFrame(self.groupBox)
        self.frame.setFrameShape(QFrame.StyledPanel)
        self.frame.setFrameShadow(QFrame.Raised)
        self.frame.setObjectName("frame")
        self.verticalLayout = QVBoxLayout(self.frame)
        self.verticalLayout.setObjectName("verticalLayout")
        self.label = QLabel(self.frame)
        self.label.setObjectName("label")
        self.verticalLayout.addWidget(self.label)
        self.labelText = QPlainTextEdit(self.frame)
        self.labelText.setObjectName("labelText")
        self.verticalLayout.addWidget(self.labelText)
        self.btnLabelFont = QPushButton(self.frame)
        self.btnLabelFont.setObjectName("btnLabelFont")
        self.verticalLayout.addWidget(self.btnLabelFont)
        self.btnLabelColor = QPushButton(self.frame)
        self.btnLabelColor.setObjectName("btnLabelColor")
        self.verticalLayout.addWidget(self.btnLabelColor)
        self.frame_2 = QFrame(self.frame)
        self.frame_2.setFrameShape(QFrame.StyledPanel)
        self.frame_2.setFrameShadow(QFrame.Raised)
        self.frame_2.setObjectName("frame_2")
        self.horizontalLayout = QHBoxLayout(self.frame_2)
        self.horizontalLayout.setObjectName("horizontalLayout")
        self.label_2 = QLabel(self.frame_2)
        self.label_2.setObjectName("label_2")
        self.horizontalLayout.addWidget(self.label_2)
        self.spinLabelRotation = QSpinBox(self.frame_2)
        self.spinLabelRotation.setObjectName("spinLabelRotation")
        self.spinLabelRotation.setMinimum(-360)
        self.spinLabelRotation.setMaximum(360)
        self.horizontalLayout.addWidget(self.spinLabelRotation)
        self.verticalLayout.addWidget(self.frame_2)
        self.chbBackgroundEnable = QCheckBox(self.frame)
        self.chbBackgroundEnable.setChecked(True)
        self.chbBackgroundEnable.setObjectName("chbBackgroundEnable")
        self.verticalLayout.addWidget(self.chbBackgroundEnable)
        self.horizontalLayout_2.addWidget(self.frame)
        self.vLayout_3.addWidget(self.groupBox)

        self.resolutionFrame = QFrame(self.frame)
        self.resolutionFrame.setFrameShape(QFrame.StyledPanel)
        self.resolutionFrame.setFrameShadow(QFrame.Raised)
        self.resolutionFrame.setObjectName("resolutionFrame")
        self.horizontalLayout4 = QHBoxLayout(self.resolutionFrame)
        self.horizontalLayout4.setObjectName("horizontalLayout4")
        self.label_resolution = QLabel(self.resolutionFrame)
        self.label_resolution.setObjectName("label_resolution")
        self.label_resolution.setText("Print Resolution (dpi):")
        self.horizontalLayout4.addWidget(self.label_resolution)
        self.spinResolution = QSpinBox(self.resolutionFrame)
        self.spinResolution.setObjectName("spinResolution")
        self.spinResolution.setMinimum(0)
        self.spinResolution.setMaximum(1000)
        self.spinResolution.setValue(300)
        self.horizontalLayout4.addWidget(self.spinResolution)
        #         self.verticalLayout.addWidget(self.frame_2)
        self.vLayout_3.addWidget(self.resolutionFrame)

        self.gbTable = GroupBox(self.propertyWidget)
        self.gbTable.Caption = "Table"
        self.vLayout_3.addWidget(self.gbTable)

        self.mTableView = QTableView(self.gbTable)
        self.gbTable.Add = self.mTableView
        hHeder = self.mTableView.horizontalHeader()
        hHeder.setVisible(False)
        vHeder = self.mTableView.verticalHeader()
        vHeder.setVisible(False)
        # self.mTableView.setFixedHeight(70)
        # self.mTableView.setFixedWidth(comp.paperWidth() - 40)

        # self.stdItemModel = QStandardItemModel()
        # self.

        self.spaceItem = QSpacerItem(20, 40, QSizePolicy.Minimum,
                                     QSizePolicy.Expanding)
        self.vLayout_3.addItem(self.spaceItem)

        self.groupBox.setTitle("Label Property")
        self.label.setText("Label Text:")
        self.btnLabelFont.setText("Label Font")
        self.btnLabelColor.setText("Label Color")
        self.label_2.setText("Label Rotation:")
        self.chbBackgroundEnable.setText("Background Enable")
        self.groupBox.setEnabled(False)
        self.connect(self.btnLabelFont, SIGNAL("clicked()"),
                     self.btnLabelFontClick)
        self.connect(self.btnLabelColor, SIGNAL("clicked()"),
                     self.btnLabelColorClick)
        self.connect(self.chbBackgroundEnable, SIGNAL("clicked()"),
                     self.chbBackgroundEnableClick)
        self.labelText.textChanged.connect(self.labelTextChanged)
        self.spinLabelRotation.valueChanged.connect(
            self.spinLabelRotationValueChanged)
        layout.addLayout(hLayout)
        #
        self.btnBack = QPushButton()
        self.btnBack.setText("back")
        footerLayout = QHBoxLayout()
        footerLayout.addWidget(self.btnBack)

        self.buttonBox = QDialogButtonBox(self)
        self.buttonBox.setOrientation(Qt.Horizontal)
        self.buttonBox.setStandardButtons(QDialogButtonBox.Cancel
                                          | QDialogButtonBox.Ok)
        self.buttonBox.setObjectName("buttonBox")
        footerLayout.addWidget(self.buttonBox)
        layout.addLayout(footerLayout)
        self.setLayout(layout)

        deleteItemKey = QShortcut(QKeySequence(Qt.Key_Delete), self)
        deleteItemKey.activated.connect(self.deleteItem)

        # self.btnBack.clicked.connect(self.back)
        self.connect(self.buttonBox, SIGNAL("accepted()"), self.acceptMethod)
        self.connect(self.buttonBox, SIGNAL("rejected()"), self.reject)
        self.btnCancel = self.buttonBox.button(QDialogButtonBox.Cancel)
        self.view.setCurrentTool(QgsComposerView.Select)

        self.btnLabelColor.setVisible(False)
        # self.btnBack.setVisible(False)
        self.chbBackgroundEnable.setVisible(False)
        #         self.view.emit(SIGNAL("actionFinished"))

        #         if self.scene.plotStyle() != QgsComposition.Preview:
        #         self.scene.setPlotStyle(QgsComposition.Preview)
        #         self.mapItem.setPreviewMode(QgsComposerMap.Render)
        #         self.mapItem.updateCachedImage()
        #         self.mapItem.setSelected(True)
        self.mComposition = comp
        self.composerMapItem = self.mComposition.composerMapItems()[0]
        self.composerMapItem.setUpdatesEnabled(True)
        self.mStdModel = model

        self.mTableView.setModel(self.mStdModel)
        self.mTableView.setSpan(0, 0, 1, 6)
        self.mTableView.setSpan(1, 0, 1, 2)
        self.mTableView.setSpan(2, 0, 2, 1)
        self.mTableView.setSpan(4, 0, 1, 2)
        self.mTableView.setSpan(5, 0, 1, 2)
        self.mTableView.setSpan(6, 0, 1, 2)

        self.mTableView.setSpan(0, 6, 1, 8)
        self.mTableView.setSpan(1, 7, 1, 4)
        self.mTableView.setSpan(1, 11, 1, 3)
        self.mTableView.setSpan(2, 7, 1, 4)
        self.mTableView.setSpan(2, 11, 1, 3)

    def acceptMethod(self):
        # self.mStdModel.setItem(0, QStandardItem("nnnnnnnn"))
        filePath = QFileDialog.getSaveFileName(
            self, "Save PDF File", QCoreApplication.applicationDirPath(),
            "pdf files(*.pdf )")
        if filePath == "":
            return
        self.mComposition.clearSelection()
        self.mComposition.setPrintResolution(self.spinResolution.value())
        resultPdf = self.mComposition.exportAsPDF(filePath)
        if resultPdf:
            message = QMessageBox.information(self, "Result",
                                              "Successful export PDF")
        else:
            message = QMessageBox.information(self, "Result",
                                              "Don't export PDF")

    def rePresent(self, comp, model):
        self.mComposition = comp
        self.mStdModel = model
        self.view.setComposition(comp)
        self.scene = self.view.composition()

    def back(self):
        self.done(2)

    def spinLabelRotationValueChanged(self, rotationValue):
        self.selectedLabelItem.setItemRotation(rotationValue)

    def cursorPosChangedEvent(self, scenePointF):
        self.scenePoint = scenePointF
#         i = 100

    def labelTextChanged(self):
        self.selectedLabelItem.beginCommand(
            "Label text changed", QgsComposerMergeCommand.ComposerLabelSetText)
        self.selectedLabelItem.blockSignals(True)
        self.selectedLabelItem.setText(self.labelText.toPlainText())
        self.selectedLabelItem.update()
        self.selectedLabelItem.blockSignals(False)
        self.selectedLabelItem.endCommand()

    def chbBackgroundEnableClick(self):
        if self.chbBackgroundEnable.isChecked():
            self.selectedLabelItem.setBackgroundEnabled(True)
            self.mapItem.updateCachedImage()
        else:
            self.selectedLabelItem.setBackgroundEnabled(False)
            self.mapItem.updateCachedImage()

    def btnLabelFontClick(self):
        dlgFont = QFontDialog(self)
        dlgFont.setCurrentFont(self.selectedLabelItem.font())
        result = dlgFont.exec_()
        if result == 1:
            self.labelFont = dlgFont.selectedFont()
        else:
            self.labelFont = QFont()

        self.selectedLabelItem.setFont(self.labelFont)

    def btnLabelColorClick(self):
        dlgColor = QColorDialog(self)
        dlgColor.setCurrentColor(self.selectedLabelItem.fontColor())
        result = dlgColor.exec_()
        if result == 1:
            self.labelColor = dlgColor.selectedColor()
            self.selectedLabelItem.setFontColor(self.labelColor)

    def createTempleteAction(self):
        if self.templeteCreateAction.isChecked() and self.basePMCheck:
            font = QFont("Arial", 13)
            font.setItalic(True)
            self.compLabel1 = QgsComposerLabel(self.scene)
            self.compLabel1.setFont(font)
            self.compLabel1.setText("South China Sea")
            self.compLabel1.setBackgroundEnabled(False)
            self.compLabel1.setItemPosition(156, 100)
            self.compLabel1.adjustSizeToText()
            self.compLabel1.setItemRotation(60)
            #             mapitem = self.scene.composerMapItems()
            #             mapitem[0].addItem(self.compLabel1)
            self.scene.addItem(self.compLabel1)

            self.compLabel2 = QgsComposerLabel(self.scene)
            self.compLabel2.setFont(font)
            self.compLabel2.setText("Straits Of Malacca")
            self.compLabel2.setBackgroundEnabled(False)
            self.compLabel2.setItemPosition(35, 100)
            self.compLabel2.adjustSizeToText()
            self.compLabel2.setItemRotation(60)
            self.scene.addItem(self.compLabel2)

            font.setItalic(False)
            self.compLabel3 = QgsComposerLabel(self.scene)
            self.compLabel3.setFont(font)
            self.compLabel3.setBackgroundEnabled(False)
            self.compLabel3.setText("THAILAND")
            self.compLabel3.setItemPosition(68, 60)
            self.compLabel3.adjustSizeToText()
            #             self.compLabel3.setItemRotation(0.5)
            self.scene.addItem(self.compLabel3)
            #             self.templeteCreateAction.setChecked(False)

            self.compLabel4 = QgsComposerLabel(self.scene)
            self.compLabel4.setFont(font)
            self.compLabel4.setBackgroundEnabled(False)
            self.compLabel4.setText("SINGAPORE")
            self.compLabel4.setItemPosition(141, 218)
            self.compLabel4.adjustSizeToText()
            #             self.compLabel3.setItemRotation(0.5)
            self.scene.addItem(self.compLabel4)
            self.templeteCreateAction.setChecked(False)
            self.compLabel4.setSelected(True)
        elif self.templeteCreateAction.isChecked(
        ) and self.basePMCheck == False:
            font = QFont("Arial", 14)
            font.setItalic(True)
            self.compLabel5 = QgsComposerLabel(self.scene)
            self.compLabel5.setFont(font)
            self.compLabel5.setText("South China Sea")
            self.compLabel5.setBackgroundEnabled(False)
            self.compLabel5.setItemPosition(108, 86)
            self.compLabel5.adjustSizeToText()
            self.compLabel5.setItemRotation(-45)
            #             mapitem = self.scene.composerMapItems()
            #             mapitem[0].addItem(self.compLabel1)
            self.scene.addItem(self.compLabel5)

            self.compLabel6 = QgsComposerLabel(self.scene)
            self.compLabel6.setFont(font)
            self.compLabel6.setText("Sulu Sea")
            self.compLabel6.setBackgroundEnabled(False)
            self.compLabel6.setItemPosition(236, 38)
            self.compLabel6.adjustSizeToText()
            self.compLabel6.setItemRotation(45)
            self.scene.addItem(self.compLabel6)

            font.setItalic(False)
            self.compLabel7 = QgsComposerLabel(self.scene)
            self.compLabel7.setFont(font)
            self.compLabel7.setBackgroundEnabled(False)
            self.compLabel7.setText("Celebes Sea")
            self.compLabel7.setItemPosition(242, 112)
            self.compLabel7.adjustSizeToText()
            self.compLabel7.setItemRotation(-45)
            #             self.compLabel3.setItemRotation(0.5)
            self.scene.addItem(self.compLabel7)
            #             self.templeteCreateAction.setChecked(False)

            self.compLabel8 = QgsComposerLabel(self.scene)
            self.compLabel8.setFont(font)
            self.compLabel8.setBackgroundEnabled(False)
            self.compLabel8.setText("INDONESIA\n(Kalimantan)")
            self.compLabel8.setItemPosition(172, 148, 32, 16)
            #             self.compLabel8.setHAlign(Qt.AlignHCenter)
            #             self.compLabel8.setVAlign(Qt.AlignVCenter)
            #             self.compLabel8.setFrameEnabled(False)
            #             self.compLabel8.setItemPosition()
            #             self.compLabel8.adjustSizeToText()
            #             self.compLabl3.setItemRotation(0.5)
            self.scene.addItem(self.compLabel8)

            self.compLabel9 = QgsComposerLabel(self.scene)
            self.compLabel9.setFont(font)
            self.compLabel9.setBackgroundEnabled(False)
            self.compLabel9.setText("BRUNEI")
            self.compLabel9.setItemPosition(136, 83)
            self.compLabel9.adjustSizeToText()
            #             self.compLabl3.setItemRotation(0.5)
            self.scene.addItem(self.compLabel9)
            self.templeteCreateAction.setChecked(False)

        pass

    def actionMapRefresh_triggered(self):

        self.view.setCurrentTool(QgsComposerView.AddRectangle)

    def setSelectionTool(self):
        self.view.deleteSelectedItems()
        font = QFont("Arial", 14)
        newLabelItem = QgsComposerLabel(self.scene)
        newLabelItem.setText("QGIS")
        newLabelItem.setFont(font)

        newLabelItem.setItemPosition(self.scenePoint.x(), self.scenePoint.y())
        newLabelItem.adjustSizeToText()

        self.scene.addItem(newLabelItem)
        #         selectItemPoint = self.scene.composerItemAt(self.scenePoint)
        newLabelItem.setSelected(True)
        self.groupBox.setEnabled(True)
        self.selectedLabelItem = newLabelItem
        #         txt = self.selectedLabelItem.text()
        #         textDoc = QTextDocument(txt)
        self.labelText.setPlainText(self.selectedLabelItem.text())
        #         self.scene.setSelectedItem(self.newLabelItem)

        self.view.setCurrentTool(QgsComposerView.Select)
        #         self.selectedLabelItem = self.view.currentTool()
        self.textItemAction.setChecked(False)

    def selectedItemDisplay(self, item):

        if self.scene.plotStyle() != QgsComposition.Preview:
            self.scene.setPlotStyle(QgsComposition.Preview)
            self.mapItem.setPreviewMode(QgsComposerMap.Render)
            self.mapItem.updateCachedImage()
        item._class_ = QgsComposerLabel
        #         selectedItems = self.scene.selectedComposerItems(True)
        #         if isinstance(item, QgsComposerItem):
        #             self.selectedLabelItem = item
        #         if isinstance(item, QGraphicsRectItem):
        #             self.selectedLabelItem = item
        if isinstance(item, QgsComposerLabel):
            self.selectedLabelItem = item
            self.groupBox.setEnabled(True)
            self.labelText.setPlainText(self.selectedLabelItem.text())
            self.spinLabelRotation.setValue(self.selectedLabelItem.rotation())
        else:
            self.groupBox.setEnabled(False)
#         print "debug"
        itemName = self.view.currentTool()
        if itemName == 5:
            item.setText("label")
        pass

    def deleteItem(self):
        self.view.deleteSelectedItems()
コード例 #50
0
ファイル: QPlayer.py プロジェクト: mplamann/PTG
class QPlayer(QWidget, Ui_QPlayer):
    def __init__(self, handModel, gameDialog, gameType, controllable, playerName, parent=None):
        QWidget.__init__(self, parent)
        self.setupUi(self)
        self.controllable = controllable
        self.name = playerName
        if gameType is utilities.kGameTypeYuGiOh:
            self.btnDeck.pixmap = QPixmap("images/yugiohBack.jpg")
            self.piPlayerInfo.setLife(8000)
            self.piPlayerInfo.hidePoison()
        else:
            self.btnDeck.pixmap = QPixmap("images/back.jpg")
        self.btnDeck.displaysTopCard = False
        self.btnDeck.enlargeFunction = gameDialog.enlargeCard
        self.btnGraveyard.pixmap = QPixmap("images/empty.jpg")
        self.btnGraveyard.enlargeFunction = gameDialog.enlargeCard
        self.btnGraveyard.controllable = controllable

        self.gameType = gameType
        if gameType is utilities.kGameTypeTwoHeadedGiant:
            self.piPlayerInfo.setLife(30)
        
        # Setup models
        self.creaturesModel = QCardModel(self, self.controllable, 140)
        self.creaturesModel.enlargeFunction = gameDialog.enlargeCard
        self.landsModel = QCardModel(self, self.controllable, 140)
        self.landsModel.enlargeFunction = gameDialog.enlargeCard
        self.graveyardModel = QCardModel(self, self.controllable)
        self.graveyardModel.enlargeFunction = gameDialog.enlargeCard
        self.handModel = handModel
        self.handModel.enlargeFunction = gameDialog.enlargeCard
        self.exileModel = QCardModel(self, self.controllable)
        self.exileModel.enlargeFunction = gameDialog.enlargeCard
        if self.gameType is not utilities.kGameTypeYuGiOh:
            self.deck = QDeck(self, controllable, game="Magic")
        else:
            self.deck = QDeck(self, controllable, game="Yu-Gi-Oh")
        self.deck.enlargeFunction = gameDialog.enlargeCard

        # Handle commander format
        if gameType is utilities.kGameTypeCommander:
            self.lblCommander.show()
        else:
            self.lblCommander.hide()
        
        # Connect Views and Models
        self.lvCreatures.setModel(self.creaturesModel)
        self.lvLands.setModel(self.landsModel)
        self.btnGraveyard.setModel(self.graveyardModel)
        
        self.gameDialog = gameDialog
        
        # Connect signals and slots
        if self.controllable:
            self.connect(self.btnDeck, SIGNAL("clicked()"), self.drawCard)
            self.connect(self.lvCreatures, SIGNAL('doubleClicked(QModelIndex)'), self.creaturesModel.toggleCardAtIndexTapped)
            self.connect(self.lvCreatures, SIGNAL('customContextMenuRequested(QPoint)'), self.creaturesModel.contextMenuFunction(self.lvCreatures, self, gameDialog, self))
            self.connect(self.lvLands, SIGNAL('doubleClicked(QModelIndex)'), self.landsModel.toggleCardAtIndexTapped)
            self.connect(self.lvLands, SIGNAL('customContextMenuRequested(QPoint)'), self.landsModel.contextMenuFunction(self.lvLands, self, gameDialog, self))
            self.connect(self.btnDeck, SIGNAL('customContextMenuRequested(QPoint)'), self.displayDeckMenu)
        
        self.connect(self.lvCreatures, SIGNAL("clicked(QModelIndex)"), self.enlargeCreature)
        self.connect(self.lvLands, SIGNAL("clicked(QModelIndex)"), self.enlargeLand)
        self.connect(self.btnGraveyard, SIGNAL('customContextMenuRequested(QPoint)'), self.displayGraveyardMenu)
        self.btnDeck.setContextMenuCallback(self.displayDeckDragAndDropMenu)
        self.piPlayerInfo.hide()

    def setGameType(self, gameType):
        self.gameType = gameType

    
    def hideDeck(self):
        for i in range(0, self.vlDeck.count()):
            self.vlDeck.itemAt(i).widget().hide()
        self.piPlayerInfo.show()
    
    def flip(self):
        return
        flippedWidgets = []
        for row in range(0,self.layout().rowCount()):
            rowWidgets = []
            for column in range(0,self.layout().columnCount()):
                item = self.layout().itemAtPosition(row,column)
                rowWidgets.append(item)
                self.layout().removeItem(item)
            flippedWidgets.insert(0, rowWidgets)
        for y,row in enumerate(flippedWidgets):
            for x,widget in enumerate(row):
                self.layout().addItem(widget, y, x)
    
    def drawCard(self):
        abbreviation, index = self.deck.drawCard()
        self.handModel.addItem(QCard(abbreviation, index))

    def setDeckFromFile(self,filename):
        print "Loading deck %s..." % filename
        import os; print os.getcwd()
        self.deck.loadFromFile(filename)
        self.setupDeck()

    def setRandomDeckFromColors(self, colors):
        self.deck.randomFromColors(colors)
        self.setupDeck()

    def setupDeck(self):
        self.updateDeckSize()
        self.btnDeck.setModel(self.deck)
        self.connect(self.deck, SIGNAL('rowsInserted(QModelIndex,int,int)'), self.updateDeckSize)
        self.connect(self.deck, SIGNAL('rowsRemoved(QModelIndex,int,int)'), self.updateDeckSize)
        if self.gameType is utilities.kGameTypeCommander:
            commanderCard = self.deck.removeCommanderFromDeck()
            if commanderCard is not None:
                self.lblCommander.setPixmap(commanderCard.pixmap())
        
    def updateDeckSize(self, ignored1=None,ignored2=None,ignored3=None):
        self.lblDeckSize.setText("%d Cards in Deck" % (len(self.deck.list)))
    
    def enlargeLand(self, index):
        self.gameDialog.enlargeCard(self.landsModel.list[index.row()])
    
    def enlargeCreature(self, index):
        self.gameDialog.enlargeCard(self.creaturesModel.list[index.row()])
    
    def untapAll(self):
        self.creaturesModel.untapAll()
        self.landsModel.untapAll()
    
    def displayDeckMenu(self, pt):
        menu = QMenu()
        menu.addAction("Shuffle", self.deck.shuffle)
        menu.addAction("View Library", self.btnDeck.viewContents)
        menu.addAction("Reveal top card") # TODO: Implement

        def millFunction(number):
            def millCards():
                for i in range(number):
                    card = self.deck.list[-1]
                    self.deck.removeItem(card)
                    self.graveyardModel.addItem(card,0)
            return millCards
        millSubmenu = menu.addMenu("Mill")
        millSubmenu.addAction("Mill 1", millFunction(1))
        millSubmenu.addAction("Mill 2", millFunction(2))
        millSubmenu.addAction("Mill 3", millFunction(3))
        millSubmenu.addAction("Mill 5", millFunction(5))
        menu.exec_(self.btnDeck.mapToGlobal(pt))
    
    def displayGraveyardMenu(self, pt):
        menu = QMenu()
        menu.addAction("View Graveyard", self.btnGraveyard.viewContents)
        if self.controllable:
            menu.addAction("Exile All") #TODO: Implement
        menu.exec_(self.btnGraveyard.mapToGlobal(pt))
    
    def displayDeckDragAndDropMenu(self):
        print "Displaying menu"
        menu = QMenu()
        menu.addAction("Send to top")
        menu.addAction("Send to botton")
        result = menu.exec_(QCursor.pos())
        if result.text() == "Send to top":
            return len(self.deck.list)
        else:
            return 0 # Send to bottom
    
    def askToAddToken(self):
        picker = QItemPicker(self, self.addToken, QTokenListModel(self), "Token")
        picker.show()
    def addToken(self, filename):
        card = QCard('tokens',filename)
        self.creaturesModel.addItem(card)
    
    def displayExile(self):
        from PyQt4.QtGui import QListView, QAbstractItemView, QPushButton, QVBoxLayout, QLabel
        from PyQt4.QtCore import QSize
        from util import utilities
        windowSize = self.window().frameSize()
        self.viewer = QWidget(self.window())
        self.viewer.move(10,10)
        self.viewer.resize(QSize(windowSize.width()-(25+utilities.bigCardSize[0]),275))
        
        lvViewer = QListView(self.viewer)
        lvViewer.setModel(self.model)
        lvViewer.setDragEnabled(True)
        lvViewer.setHorizontalScrollMode(QAbstractItemView.ScrollPerPixel)
        lvViewer.setFlow(QListView.LeftToRight)
        lvViewer.setFocus()
        self.connect(lvViewer, SIGNAL('clicked(QModelIndex)'), self.enlarge)
        
        button = QPushButton("Close", self.viewer)
        self.connect(button,SIGNAL('clicked()'),self.hideViewer)
        
        layout = QVBoxLayout(self)
        layout.addWidget(QLabel("I'm sorry this is so ugly.",self.viewer))
        layout.addWidget(lvViewer)
        layout.addWidget(button)
        self.viewer.setLayout(layout)
        
        self.viewer.show()
    
    ##################################
    #### Networking Methods ##########
    #### Called by QPTG     ##########
    ##################################
    
    def addCardTo(self, pickledCard, zone, position):
#        card = pickle.loads(pickledCard)
        card = QCard.unserializeCard(pickledCard)
        if int(zone) is Networking.QGameClient.HAND:
            self.piPlayerInfo.setHandSize(self.piPlayerInfo.handSize()+1)
        if int(zone) is Networking.QGameClient.DECK:
            self.piPlayerInfo.setDeckSize(self.piPlayerInfo.deckSize()+1)
        if int(zone) is Networking.QGameClient.EXILE:
            self.exileModel.addItem(card, int(position))
        if int(zone) is Networking.QGameClient.GRAVEYARD:
            self.graveyardModel.addItem(card, int(position))
        if int(zone) is Networking.QGameClient.CREATURES:
            self.creaturesModel.addItem(card, int(position))
        if int(zone) is Networking.QGameClient.LANDS:
            self.landsModel.addItem(card, int(position))
    
    def removeCardFrom(self, zone, position):
        if int(zone) is Networking.QGameClient.HAND:
            self.piPlayerInfo.setHandSize(self.piPlayerInfo.handSize()-1)
        if int(zone) is Networking.QGameClient.DECK:
            self.piPlayerInfo.setDeckSize(self.piPlayerInfo.deckSize()-1)
        if int(zone) is Networking.QGameClient.EXILE:
            self.exileModel.removeItem(self.exileModel.list[int(position)])
        if int(zone) is Networking.QGameClient.GRAVEYARD:
            self.graveyardModel.removeItem(self.graveyardModel.list[int(position)])
        if int(zone) is Networking.QGameClient.CREATURES:
            self.creaturesModel.removeItem(self.creaturesModel.list[int(position)])
        if int(zone) is Networking.QGameClient.LANDS:
            self.landsModel.removeItem(self.landsModel.list[int(position)])
    
    def setCardTo(self, pickledCard, zone, position):
        card = QCard.unserializeCard(pickledCard)
        if int(zone) is Networking.QGameClient.EXILE:
            self.exileModel.setItem(card, int(position))
        if int(zone) is Networking.QGameClient.GRAVEYARD:
            self.graveyardModel.setItem(card, int(position))
        if int(zone) is Networking.QGameClient.CREATURES:
            self.creaturesModel.setItem(card, int(position))
        if int(zone) is Networking.QGameClient.LANDS:
            self.landsModel.setItem(card, int(position))