def testDump(self):
     objs = [QObject()]
     objs.append(QObject(parent=objs[0]))
     objs.append(QObject(parent=objs[0]))
     objs.append(QObject(parent=objs[1]))
     objs.append(QObject(parent=objs[2]))
     WidgetUtils.dumpQObjectTree(objs[0])
示例#2
0
    def test_manager(self):
        source = QObject()
        target = QObject()

        manager = BindingManager(submitPolicy=BindingManager.ManualSubmit)

        manager.bind((target, "target"), None).to((source, "source"))

        tbind = DynamicPropertyBinding(target, "target_copy")
        sbind = DynamicPropertyBinding(source, "source")
        schanged = []
        sbind.changed[object].connect(schanged.append)

        manager.bind(tbind, None).to(sbind)

        source.setProperty("source", 1)
        self.assertEqual(len(schanged), 1)

        self.assertEqual(toPyObject(target.property("target")), None)

        manager.commit()

        self.assertEqual(toPyObject(target.property("target")), 1)
        self.assertEqual(toPyObject(target.property("target_copy")), 1)

        source.setProperty("source", 2)

        manager.setSubmitPolicy(BindingManager.AutoSubmit)

        self.assertEqual(toPyObject(target.property("target")), 2)
        self.assertEqual(toPyObject(target.property("target_copy")), 2)
    def test_base(self):
        a = QObject()
        l = ListOfPageModel(parent=a)
        l._data = [{"titre": "aaa", "id": "111", "matiereBgColor": "#111111"}]

        assert l.parent() == a
        assert l.rowCount() == 1
示例#4
0
    def test_18(self):
        for _ in self.syncPoolAndThread:
            # Terminate using a context manager.
            with AsyncController(_) as ac1:
                pass
            with self.assertRaises(AssertionError):
                ac1.start(None, lambda: None)

            # Termiante by calling terminate.
            ac2 = AsyncController(_)
            ac2.terminate()
            with self.assertRaises(AssertionError):
                ac2.start(None, lambda: None)

            # Terminate via __del__, I hope.
            ac3 = AsyncController(_)
            del ac3
            # Can't try start, since the object was deleted.

            # Terminate via the QT object tree.
            o = QObject()
            ac3 = AsyncController(_, o)
            sip.delete(o)
            with self.assertRaises(AssertionError):
                ac3.start(None, lambda: None)
示例#5
0
    def test_expr(self):
        obj1 = QObject()

        obj1.setProperty("value", 1)
        obj1.setProperty("other", 2)

        result = DynamicPropertyBinding(obj1, "result")
        result.bindTo(
            PropertyBindingExpr(
                "value + other",
                locals={"value": binding_for(obj1, "value"),
                        "other": binding_for(obj1, "other")}
                )
            )

        expr = PropertyBindingExpr(
           "True if value < 3 else False",
           dict(value=DynamicPropertyBinding(obj1, "result"))
        )

        result_values = []
        result.changed[object].connect(result_values.append)

        expr_values = []
        expr.changed[object].connect(expr_values.append)

        self.assertEqual(result.get(), 3)
        self.assertEqual(expr.get(), False)

        obj1.setProperty("value", 0)
        self.assertEqual(result_values[-1], 2)
        self.assertEqual(expr_values[-1], True)

        self.assertEqual(result.get(), 2)
        self.assertEqual(expr.get(), True)
示例#6
0
 def updateFontFamily(self, event):
     obj = QObject()
     sender = obj.sender()
     name = sender.objectName()
     self.body.setFontFamily(name)
     self.fontFamilyMenu.setText(name)
     self.fontBodyFamily = self.fontFamilyMenu.text()
示例#7
0
 def updateFontSize(self, event):
     obj = QObject()
     sender = obj.sender()
     name = sender.objectName()
     self.body.setFontPointSize(int(name))
     self.fontSizeMenu.setText(name + 'pt')
     self.fontBodyPointSize = int(name)
示例#8
0
    def __init__(self, parent=None, title=None):
        QLocale.setDefault(QLocale(QLocale.English, QLocale.UnitedStates))
        super(DAQ_Analysis, self).__init__()
        if parent is None:
            raise Exception('no valid parent container, expected dockarea')
            # parent=DockArea()
            # exit(0)

        self.dockarea = parent
        self.mainwindow = parent.parent()

        if title is None:
            title = 'DAQ_Analysis'
        self.title = title
        self.mainwindow.setWindowTitle(self.title)

        self.wait_time = 2000

        self.h5file = None
        self.loaded_data = None
        self.loaded_data_scan_type = None
        self.x_axis = None
        self.y_axis = None

        self.data_buffer = []  # convenience list to store data to be displayed

        self.ui = QObject()  # the user interface
        self.set_GUI()
示例#9
0
    def __init__(self, parent=None):
        QLocale.setDefault(QLocale(QLocale.English, QLocale.UnitedStates))
        super(ViewerND, self).__init__()
        # if parent is None:
        #     raise Exception('no valid parent container, expected dockarea')
        # parent=DockArea()
        # exit(0)

        if parent is None:
            parent = QtWidgets.QWidget()
            parent.show()
        self.parent = parent

        self.wait_time = 2000
        self.viewer_type = 'DataND'  # ☺by default but coul dbe used for 3D visualization

        self.x_axis = dict(data=None, label='', units='')
        self.y_axis = dict(data=None, label='', units='')

        self.data_buffer = [
        ]  # convenience list to store 0D data to be displayed
        self.datas = None
        self.datas_settings = None
        # set default data shape case
        self.axes_nav = None
        self.data_axes = None
        # self.set_nav_axes(3)
        self.ui = QObject()  # the user interface
        self.set_GUI()
示例#10
0
    def test_get_all_objects(self, stubs, monkeypatch):
        # pylint: disable=unused-variable
        widgets = [self.Object('Widget 1'), self.Object('Widget 2')]
        app = stubs.FakeQApplication(all_widgets=widgets)
        monkeypatch.setattr(debug, 'QApplication', app)

        root = QObject()
        o1 = self.Object('Object 1', root)
        o2 = self.Object('Object 2', o1)
        o3 = self.Object('Object 3', root)

        expected = textwrap.dedent("""
            Qt widgets - 2 objects:
                <Widget 1>
                <Widget 2>

            Qt objects - 3 objects:
                <Object 1>
                    <Object 2>
                <Object 3>

            global object registry - 0 objects:
        """).rstrip('\n')

        assert debug.get_all_objects(start_obj=root) == expected
示例#11
0
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)

        # Create a QObject and move it to mainloop thread
        self._invoker = QObject()
        self._invoker.moveToThread(QApplication.instance().thread())
        self._invoker.customEvent = self._custom_event
示例#12
0
    def setupUi(self):
        self.ui = QObject()

        vlayout = QtWidgets.QVBoxLayout()
        hlayout = QtWidgets.QHBoxLayout()

        self.ui.Tree = CustomTree()
        vlayout.addWidget(self.ui.Tree)

        iconopen = QtGui.QIcon()
        iconopen.addPixmap(QtGui.QPixmap(":/icons/Icon_Library/tree.png"),
                           QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.ui.Open_Tree = QtWidgets.QPushButton('Open Tree')
        self.ui.Open_Tree.setIcon(iconopen)

        iconopensel = QtGui.QIcon()
        iconopensel.addPixmap(QtGui.QPixmap(":/icons/Icon_Library/tree.png"),
                              QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.ui.Open_Tree_Selected = QtWidgets.QPushButton('Open Selected')
        self.ui.Open_Tree_Selected.setIcon(iconopensel)

        iconclose = QtGui.QIcon()
        iconclose.addPixmap(
            QtGui.QPixmap(":/icons/Icon_Library/CollapseAll.png"),
            QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.ui.Close_Tree = QtWidgets.QPushButton('Close Tree')
        self.ui.Close_Tree.setIcon(iconclose)

        hlayout.addWidget(self.ui.Open_Tree)
        hlayout.addWidget(self.ui.Open_Tree_Selected)
        hlayout.addWidget(self.ui.Close_Tree)

        vlayout.addLayout(hlayout)

        self.parent.setLayout(vlayout)
示例#13
0
    def __init__(self, parent, h5file=None):
        QLocale.setDefault(QLocale(QLocale.English, QLocale.UnitedStates))
        super(H5Browser, self).__init__()
        if not (isinstance(parent, QtWidgets.QWidget)
                or isinstance(parent, QtWidgets.QMainWindow)):
            raise Exception(
                'no valid parent container, expected a QWidget or a QMainWindow'
            )

        self.h5file = None

        if isinstance(parent, QtWidgets.QMainWindow):
            self.main_window = parent
            self.parent = QtWidgets.QWidget()
            self.main_window.setCentralWidget(self.parent)
        else:
            self.main_window = None
            self.parent = parent

        self.ui = QObject()  # the user interface
        self.set_GUI()

        self.load_file(h5file)

        self.ui.h5file_tree.ui.Open_Tree.click()
def test_file_area():
    def open_file(err_msg, files_to_open):
        assert not err_msg

        wl_file_area.Wl_Worker_Open_Files(
            main,
            dialog_progress=wl_dialogs_misc.Wl_Dialog_Progress(main, text=''),
            update_gui=update_gui,
            files_to_open=files_to_open).run()

    def update_gui(err_msg, new_files):
        assert not err_msg

        main.settings_custom['file_area']['files_open'].extend(new_files)

    # Reset custom settings
    main.settings_custom = copy.deepcopy(main.settings_default)

    # Clean cached files
    for file in glob.glob('imports/*.*'):
        os.remove(file)

    for file_path in glob.glob('wl_tests_files/wl_file_area/work_area/*.txt'):
        time_start = time.time()

        print(f'Loading file "{os.path.split(file_path)[1]}"... ', end='')

        table = QObject()
        table.files_to_open = []

        wl_file_area.Wl_Worker_Add_Files(
            main,
            dialog_progress=wl_dialogs_misc.Wl_Dialog_Progress(main, text=''),
            update_gui=open_file,
            file_paths=[file_path],
            table=table).run()

        new_file = main.settings_custom['file_area']['files_open'][-1]

        assert new_file['selected']
        assert new_file['name'] == new_file['name_old'] == os.path.splitext(
            os.path.split(file_path)[-1])[0]
        assert new_file['path'] == wl_misc.get_normalized_path(
            file_path).replace(
                os.path.join('wl_tests_files', 'wl_file_area', 'work_area'),
                'imports')
        assert new_file['path_original'] == wl_misc.get_normalized_path(
            file_path)
        assert new_file['encoding'] == 'utf_8'
        assert new_file['lang'] == re.search(r'(?<=\[)[a-z_]+(?=\])',
                                             file_path).group()
        assert new_file['tokenized'] == 'No'
        assert new_file['tagged'] == 'No'

        print(f'done! (In {round(time.time() - time_start, 2)} seconds)')

    # Save Settings
    with open('wl_tests/wl_settings.pickle', 'wb') as f:
        pickle.dump(main.settings_custom, f)
示例#15
0
 def __init__(self, parent=QObject()):
     super(Camera, self).__init__(parent)
     # chooses the system default camera
     self.cam = QCamera()
     self.caminfo = QCameraInfo(self.cam)
     self.camvfind = QCameraViewfinder()
     self.camvfindset = QCameraViewfinderSettings()
     self.recorder = QMediaRecorder(self.cam)
    def test_preview(self):
        obj = MagicQObject()
        obj.ui.outputFile = QObject()
        obj.ui.previewLabel = MagicQObject()

        customizer = MainWindowCustomizer(obj, obj)
        self.assertTrue(
            os.path.isfile(customizer.preview_controller.preview_path))
示例#17
0
def sort_by_fields():
    options = QObject().sender().sortOption
    files = status['selectedfiles']
    model = status['table'].model()
    if files and len(files) > 1:
        model.sortByFields(options, status['selectedfiles'],
                           status['selectedrows'])
    else:
        model.sortByFields(options)
示例#18
0
 def patch(self):
     objreg.register('app', QObject())
     objreg.register('save-manager', mock.MagicMock())
     args = argparse.Namespace(relaxed_config=False)
     objreg.register('args', args)
     old_standarddir_args = standarddir._args
     yield
     objreg.global_registry.clear()
     standarddir._args = old_standarddir_args
示例#19
0
文件: qt.py 项目: Xenoshell/raspberry
 def __init__(self, parent = QObject()):
     super(Camera, self).__init__(parent)
     print("3")
     self.cam = QCamera(QCameraInfo.defaultCamera())   #"/dev/video0".encode()
     print("4")
     self.caminfo = QCameraInfo(self.cam)
     self.camvfind = QCameraViewfinder()
     self.camvfindset = QCameraViewfinderSettings()
     self.cammode = self.cam.CaptureMode(0)
     self.camimgcap = QCameraImageCapture(self.cam)
示例#20
0
 def patch(self, fake_args):
     objreg.register('app', QObject())
     objreg.register('save-manager', mock.MagicMock())
     fake_args.relaxed_config = False
     old_standarddir_args = standarddir._args
     yield
     objreg.delete('app')
     objreg.delete('save-manager')
     # registered by config.init()
     objreg.delete('config')
     objreg.delete('key-config')
     objreg.delete('state-config')
     standarddir._args = old_standarddir_args
示例#21
0
    def initUI(self):
        self.resize(200,100)
        self.setWindowTitle("密码输入框")

        self.lb = QLabel("请输入密码:",self)

        self.edit = QLineEdit(self)
        self.edit.installEventFilter(self)

        self.bt1 = QPushButton("确定",self)
        self.bt2 = QPushButton("取消",self)

        hbox = QHBoxLayout()
        hbox.addStretch(1)
        hbox.addWidget(self.bt1)
        hbox.addStretch(1)
        hbox.addWidget(self.bt2)
        hbox.addStretch(1)

        vbox = QVBoxLayout()
        vbox.addWidget(self.lb)
        vbox.addWidget(self.edit)
        vbox.addStretch(1)
        vbox.addLayout(hbox)

        self.setLayout(vbox)

        """
        这个三个语句是给密码输入框增加一些属性
        """
        self.edit.setContextMenuPolicy(Qt.NoContextMenu)#这个语句设置QLineEdit对象的上下文菜单的策略。复制,粘贴,。。。,是否可用
        # self.edit.setPlaceholderText("密码不超15位,只能有数字和字母,必须以字母开头")#只要行编辑为空,设置此属性将使行编辑显示为灰色的占位符文本。默认情况下,此属性包含一个空字符串。这是非常好的使用方法,可以在用户输入密码前看到一些小提示信息,但是又不影响使用,非常棒这个方法。
        self.edit.setEchoMode(QLineEdit.Password)#这条语句设置了如何限定输入框中显示其包含信息的方式,这里设置的是:密码方式,即输入的时候呈现出原点出来。
        

        """
        这三段代码大体意思就是说,运用正则表达式限定密码输入框字符接收的条件:
        长度不能超过15位;
        字母开头;
        后面跟着的字符只能是字母或者数字。
        """
        # regx = QRegExp("^[a-zA-Z][0-9A-Za-z]{14}$")#为给定的模式字符串构造一个正则表达式对象。
        # validator = QRegExpValidator(regx, self.edit)#构造一个验证器,该父对象接受与正则表达式匹配的所有字符串。这里的父对象就是QLineEdit对象了。匹配是针对整个字符串; 例如:如果正则表达式是[A-Fa-f0-9]+将被视为^[A-Fa-f0-9]+$。
        # self.edit.setValidator(validator)#将密码输入框设置为仅接受符合验证器条件的输入。 这允许您对可能输入的文本设置任何约束条件。因此我们这里设置的就是符合上面描述的三种约束条件。

        self.bt1.clicked.connect(self.Ok)
        self.bt2.clicked.connect(self.Cancel)

        object = QObject()

        """
示例#22
0
    def test_dyn(self):
        obj = QObject()
        changed = []

        binding = DynamicPropertyBinding(obj, "test")
        binding.changed[object].connect(changed.append)

        self.assertIs(binding.get(), None)

        obj.setProperty("test", 1)
        self.assertEqual(binding.get(), 1)
        self.assertEqual(len(changed), 1)
        self.assertEqual(changed[-1], 1)

        binding.set(2)
        self.assertEqual(binding.get(), 2)
        self.assertEqual(len(changed), 2)
        self.assertEqual(changed[-1], 2)

        target = QObject()
        binding1 = DynamicPropertyBinding(target, "prop")

        binding1.bindTo(binding)

        self.assertEqual(binding1.get(), binding.get())
        self.assertEqual(target.property("prop"), 2)

        binding.set("a string")
        self.assertEqual(binding1.get(), "a string")
        self.assertEqual(binding1.get(), binding.get())
        self.assertEqual(target.property("prop"), "a string")

        binding1.unbind()
        binding.set(1)
        self.assertEqual(binding1.get(), "a string")
        self.assertEqual(target.property("prop"), "a string")
        self.assertEqual(binding.get(), 1)
        self.assertEqual(obj.property("test"), 1)
示例#23
0
    def setupUI(self):
        vlayout = QtWidgets.QVBoxLayout()
        hsplitter = QtWidgets.QSplitter(QtCore.Qt.Horizontal)

        self.parent.setLayout(vlayout)
        vlayout.addWidget(hsplitter)
        self.ui = QObject()
        self.image_widget = ImageWidget()
        hsplitter.addWidget(self.image_widget)

        self.scaled_yaxis = AxisItem_Scaled('right')
        self.scaled_xaxis = AxisItem_Scaled('top')
        self.image_widget.plotitem.layout.addItem(self.scaled_xaxis, *(1, 1))
        self.image_widget.plotitem.layout.addItem(self.scaled_yaxis, *(2, 2))
        self.image_widget.view.sig_double_clicked.connect(self.double_clicked)
        self.scaled_xaxis.linkToView(self.image_widget.view)
        self.scaled_yaxis.linkToView(self.image_widget.view)

        # histograms
        self.histo_widget = QtWidgets.QWidget()
        histo_layout = QtWidgets.QHBoxLayout()
        self.histo_widget.setLayout(histo_layout)
        self.histogram_red = pg.HistogramLUTWidget()
        self.histogram_green = pg.HistogramLUTWidget()
        self.histogram_blue = pg.HistogramLUTWidget()
        self.histogram_adaptive = pg.HistogramLUTWidget()
        Ntick = 3
        colors_red = [(int(r), 0, 0) for r in pg.np.linspace(0, 255, Ntick)]
        colors_green = [(0, int(g), 0) for g in pg.np.linspace(0, 255, Ntick)]
        colors_blue = [(0, 0, int(b)) for b in pg.np.linspace(0, 255, Ntick)]
        colors_adaptive = [(int(b), int(b), int(b))
                           for b in pg.np.linspace(0, 255, Ntick)]
        cmap_red = pg.ColorMap(pos=pg.np.linspace(0.0, 1.0, Ntick),
                               color=colors_red)
        cmap_green = pg.ColorMap(pos=pg.np.linspace(0.0, 1.0, Ntick),
                                 color=colors_green)
        cmap_blue = pg.ColorMap(pos=pg.np.linspace(0.0, 1.0, Ntick),
                                color=colors_blue)
        cmap_adaptive = pg.ColorMap(pos=pg.np.linspace(0.0, 1.0, Ntick),
                                    color=colors_adaptive)

        self.histogram_red.gradient.setColorMap(cmap_red)
        self.histogram_green.gradient.setColorMap(cmap_green)
        self.histogram_blue.gradient.setColorMap(cmap_blue)
        self.histogram_adaptive.gradient.setColorMap(cmap_adaptive)
        histo_layout.addWidget(self.histogram_red)
        histo_layout.addWidget(self.histogram_green)
        histo_layout.addWidget(self.histogram_blue)
        histo_layout.addWidget(self.histogram_adaptive)
        hsplitter.addWidget(self.histo_widget)
示例#24
0
 def setup(self, tmpdir):
     self.conf_path = (tmpdir / 'config').ensure(dir=1)
     self.data_path = (tmpdir / 'data').ensure(dir=1)
     self.cache_path = (tmpdir / 'cache').ensure(dir=1)
     self.env = {
         'XDG_CONFIG_HOME': str(self.conf_path),
         'XDG_DATA_HOME': str(self.data_path),
         'XDG_CACHE_HOME': str(self.cache_path),
     }
     objreg.register('app', QObject())
     objreg.register('save-manager', mock.MagicMock())
     args = argparse.Namespace(relaxed_config=False)
     objreg.register('args', args)
     yield
     objreg.global_registry.clear()
示例#25
0
    def __init__(self, parent=None):
        QLocale.setDefault(QLocale(QLocale.English, QLocale.UnitedStates))
        super(ViewerND, self).__init__()
        # if parent is None:
        #     raise Exception('no valid parent container, expected dockarea')
        # parent=DockArea()
        # exit(0)

        if parent is None:
            area = DockArea()
            area.show()
            self.area = area

        elif isinstance(parent, QtWidgets.QWidget):
            area = DockArea()
            self.area = area
            parent.setLayout(QtWidgets.QVBoxLayout())
            parent.layout.addWidget(area)
        elif isinstance(parent, DockArea):
            self.area = parent

        self.area = area

        self.wait_time = 2000
        self.viewer_type = 'DataND'  # ☺by default but coul dbe used for 3D visualization
        self.distribution = 'uniform'
        self.nav_axes_viewers = []
        self.nav_axes_dicts = []

        self.x_axis = dict(data=None, label='', units='')
        self.y_axis = dict(data=None, label='', units='')

        self.data_buffer = [
        ]  # convenience list to store 0D data to be displayed
        self.datas = None
        self.datas_settings = None
        # set default data shape case
        self.data_axes = None
        # self.set_nav_axes(3)
        self.ui = QObject()  # the user interface
        self.set_GUI()
        self.setup_spread_UI()
        self.title = ""
        self.data_to_export = OrderedDict(name=self.title,
                                          data0D=OrderedDict(),
                                          data1D=OrderedDict(),
                                          data2D=OrderedDict(),
                                          dataND=OrderedDict())
示例#26
0
 def __init__(self, obj=None):
     QObject().__init__()
     super().__init__()
     self.specs = SpecRecord()
     self.audioInfo = {}
     self.list_gpus = []
     self.cpuInfo = {}
     self.networkInfo = {}
     self.hard_drive_list = []
     self.locationInfo = {}
     self.memoryInfo = {}
     self.systemInfo = {}
     self.webcamList = []
     self.speed_status = False
     self.progress_timeout = (4 * 1000)
     self.obj = obj
示例#27
0
 def font_event(self, event):
     obj = QObject()
     sender = obj.sender()
     name = sender.objectName()
     if name == "B":
         if self.body.fontWeight() == 50:
             self.body.setFontWeight(75)
         else:
             self.body.setFontWeight(50)
     elif name == "I":
         if self.body.fontItalic():
             self.body.setFontItalic(False)
         else:
             self.body.setFontItalic(True)
     elif name == "U":
         if self.body.fontUnderline():
             self.body.setFontUnderline(False)
         else:
             self.body.setFontUnderline(True)
示例#28
0
class WidgetCommunicationChannels(QObject):
    video_loaded_signal = pyqtSignal(MovieFile)
    clear_video_signal = pyqtSignal()
    selected_area_signal = pyqtSignal(int)
    config_signal = pyqtSignal(ConfigOptions)
    monitored_area_options_signal = pyqtSignal(MonitoredAreaOptions)
    toggle_mask_signal = pyqtSignal(bool)
    mask_on_signal = pyqtSignal(bool)
    maskfile_signal = pyqtSignal(str, CrossingBeamType)
    monitored_area_rois_signal = pyqtSignal(MonitoredArea, CrossingBeamType)
    all_monitored_areas_rois_signal = pyqtSignal(list, CrossingBeamType)
    video_frame_signal = pyqtSignal(int, float, np.ndarray)
    video_frame_time_signal = pyqtSignal(float)
    video_image_resolution_signal = pyqtSignal(int, int)
    video_acq_time_signal = pyqtSignal(QDateTime)
    fly_coord_pos_signal = pyqtSignal(list)
    tracker_running_signal = pyqtSignal(bool)
    refresh_display_signal = pyqtSignal()
    status_updated_signal = pyqtSignal()
    lock = QObject()
    def initUI(self):
        self.resize(350, 100)
        self.setWindowTitle("密码输入框")

        self.lb = QLabel("请输入密码:", self)

        self.edit = QLineEdit(self)
        self.edit.installEventFilter(self)

        self.bt1 = QPushButton("确定", self)
        self.bt2 = QPushButton("取消", self)

        hbox = QHBoxLayout()
        hbox.addStretch(1)
        hbox.addWidget(self.bt1)
        hbox.addStretch(1)
        hbox.addWidget(self.bt2)
        hbox.addStretch(1)

        vbox = QVBoxLayout()
        vbox.addWidget(self.lb)
        vbox.addWidget(self.edit)
        vbox.addStretch(1)
        vbox.addLayout(hbox)

        self.setLayout(vbox)

        self.edit.setContextMenuPolicy(Qt.NoContextMenu)
        self.edit.setPlaceholderText("密码不超15位,只能有数字和字母,必须以字母开头")
        self.edit.setEchoMode(QLineEdit.Password)

        regx = QRegExp("^[a-zA-Z][0-9A-Za-z]{14}$")
        print('111')
        validator = QRegExpValidator(regx, self.edit)
        print('222')
        self.edit.setValidator(validator)

        self.bt1.clicked.connect(self.Ok)
        self.bt2.clicked.connect(self.Cancel)

        object = QObject()
示例#30
0
def test_properties(fk, bridge):
    ac = fk.f_activite()
    p = Page.new(titre="bla", activite=ac.id, lastPosition=5, parent=bridge)

    # titre
    p.titre = "Haha"
    assert p.titre == "Haha"
    assert ss(lambda: fk.db.Page[p.id].titre) == "Haha"

    # lastused
    assert p.lastPosition == 5
    p.lastPosition = 2
    assert p.lastPosition == 2

    # matiere
    assert p.matiereId == str(ac.matiere.id)

    # classert
    a = QObject()
    p.setParent(a)
    assert p.classeur == a