def __init__(self): super(ReplaceTool, self).__init__() self.setWindowFlags(Qt.WindowStaysOnTopHint) self.setWindowTitle('Replace Tool') self.setFixedHeight(100) self.setFixedWidth(320) lyt_main = QVBoxLayout() lbl_find = QLabel('Find:') lbl_find.setFixedWidth(55) self.ledit_find = QLineEdit() lbl_replace = QLabel('Replace:') lbl_replace.setFixedWidth(55) self.ledit_replace = QLineEdit() reg_ex = QRegExp("[a-zA-Z_]+") text_validator = QRegExpValidator(reg_ex, self.ledit_find) self.ledit_find.setValidator(text_validator) self.ledit_replace.setValidator(text_validator) lyt_find = QHBoxLayout() lyt_find.addWidget(lbl_find) lyt_find.addWidget(self.ledit_find) lyt_main.addLayout(lyt_find) lyt_replace = QHBoxLayout() lyt_replace.addWidget(lbl_replace) lyt_replace.addWidget(self.ledit_replace) lyt_main.addLayout(lyt_replace) btn_submit = QPushButton('Submit') btn_submit.setFixedHeight(20) btn_submit.setFixedWidth(55) lyt_submit_button = QHBoxLayout() lyt_submit_button.setAlignment(Qt.AlignRight) lyt_submit_button.addWidget(btn_submit) lyt_main.addLayout(lyt_submit_button) self.setLayout(lyt_main) btn_submit.clicked.connect(self.submit)
class MainWindow(QDialog): def __init__(self, parent=None): super(MainWindow, self).__init__(parent) self.h0 = QHBoxLayout() self.lineArray = [] labelArray = [u'時間', u'值班', u'救護勤務', u'備勤', u'待命服勤', u'水源查察', u'消防查察', u'宣導勤務', u'訓(演)練', u'專案勤務', u'南山救護站'] for i in labelArray: label = QLabel(i) label.setFixedWidth(100) label.setAlignment(Qt.AlignCenter) self.h0.addWidget(label) self.h0.addSpacing(15) self.v0 = QVBoxLayout() self.v0.addLayout(self.h0) for i in xrange(24): hn = QHBoxLayout() for j in xrange(len(labelArray)): if j == 0: time = i+8 if (i+8)< 24 else i+8-24 line = QLabel("%s:00~%s:00" % (str(time).zfill(2), str(time+1).zfill(2))) else: line = QLineEdit() self.lineArray.append(line) line.setFixedWidth(100) hn.addSpacing(15) hn.addWidget(line) self.v0.addLayout(hn) self.h1 = QHBoxLayout() self.clearPB = QPushButton("Clear All") self.clearPB.setFixedWidth(200) self.clearPB.setFixedHeight(50) self.clearPB.clicked.connect(self.clear) self.h1.addStretch() self.h1.addWidget(self.clearPB) self.h1.addStretch() self.v0.addLayout(self.h1) self.setLayout(self.v0) def clear(self): for each in self.lineArray: each.setText('')
def __init__(self, *args, **kwrgs): existing_widgets = Window.mayaWin.findChildren( QDialog, Window.objectName ) if existing_widgets: map( lambda x: x.deleteLater(), existing_widgets ) super( Window, self ).__init__( *args, **kwrgs ) self.installEventFilter( self ) self.setObjectName( Window.objectName ) self.setWindowTitle( Window.title ) mainLayout = QVBoxLayout( self ); mainLayout.setContentsMargins( 0,0,0,0 ); mainLayout.setSpacing(0) w_controller = Widget_loadObject( title="Controller", saveInfo=False ) w_separator1 = Widget_Separator() w_target = Widget_target() w_attrName = Widget_attributeName() w_startIndex = Widget_startIndex() w_buttons = QWidget() lay_buttons = QHBoxLayout( w_buttons ); lay_buttons.setContentsMargins( 10,0,10,10 ); lay_buttons.setSpacing( 0 ) button_connect = QPushButton( "Connect" ); button_connect.setFixedHeight( 25 ) button_close = QPushButton( "Close" ); button_close.setFixedHeight( 25 ) lay_buttons.addWidget( button_connect ) lay_buttons.addWidget( button_close ) mainLayout.addWidget(w_controller) mainLayout.addWidget(w_separator1) mainLayout.addWidget( w_target ) mainLayout.addWidget(w_attrName) mainLayout.addWidget(w_startIndex) mainLayout.addWidget( w_buttons ) self.resize( Window.defaultWidth, Window.defaultHeight ) self.load_shapeInfo( Window.path_uiInfo ) button_connect.clicked.connect( self.cmd_connect ) button_close.clicked.connect( self.deleteLater ) self.w_controller = w_controller self.w_target = w_target self.w_attrName = w_attrName self.w_startIndex = w_startIndex
class DirectoryDetectWindow(QWidget): def __init__(self): QWidget.__init__(self) self.setWindowTitle('Directory Detective Tool') main_layout = QVBoxLayout() path_layout = self._init_path_layout() guide_layout = self._init_guide_layout() detail_layout = self._init_detail_layout() main_layout.addLayout(path_layout) main_layout.addLayout(guide_layout) main_layout.addLayout(detail_layout) self.setLayout(main_layout) self.setGeometry(300, 300, 400, 350) self._connect() self._walk_folder = None self._last_path = None self.directory_info = None self._button_list = list() self._last_info = None def _init_path_layout(self): path_layout = QHBoxLayout() self.input_path = QLineEdit(self) self.input_path.setFixedHeight(35) self.input_path.setPlaceholderText('Type search path here') self.button_path = QPushButton('Scan', self) self.button_path.setFixedHeight(35) self.button_path.setFocus() path_layout.addWidget(QLabel('Path:', self)) path_layout.addWidget(self.input_path, stretch=True) path_layout.addWidget(self.button_path) return path_layout def _init_guide_layout(self): self.guide_layout = QHBoxLayout() self.guide_layout.setAlignment(Qt.AlignLeft) return self.guide_layout def refresh_trees(self, store_list, ignore_list): self._refresh_key_tree(store_list, ignore_list=ignore_list) self._refresh_value_tree(store_list) def add_button(self, name, store_list, ignore_list=None): button = QPushButton(name) button.setFixedSize(60, 35) item = (name, button, store_list, ignore_list) self._button_list.append(item) self.guide_layout.addWidget(button) self.refresh_trees(store_list=store_list, ignore_list=ignore_list) button.clicked.connect(lambda: self._set_button(item=item)) def _set_button(self, item): index_item = self._button_list.index(item) if len(self._button_list) > index_item + 1: for name, button, store_list, ignore_list in self._button_list[index_item + 1:]: button.setParent(None) name, button, store_list, ignore_list = item self.refresh_trees(store_list=store_list, ignore_list=ignore_list) def _init_detail_layout(self): detail_layout = QGridLayout() self.key_tree = QTreeWidget() self.key_tree.setColumnCount(2) self.key_tree.setColumnWidth(0, 200) self.key_tree.setHeaderLabels(['Key', 'Size']) self.value_tree = QTreeWidget() self.value_tree.setColumnCount(2) self.value_tree.setColumnWidth(0, 200) self.value_tree.setHeaderLabels(['Path', 'Size']) detail_layout.setColumnStretch(0, 1) detail_layout.setColumnStretch(1, 1) detail_layout.addWidget(self.value_tree) detail_layout.addWidget(self.key_tree) return detail_layout def _connect(self): self.button_path.clicked.connect(self.button_path_clicked) self.key_tree.doubleClicked.connect(self.key_tree_double_clicked) def button_path_clicked(self): del self._button_list[:] for _ in range(self.guide_layout.count()): current_item = self.guide_layout.takeAt(0) current_item.widget().setParent(None) path = unicode.encode(self.input_path.text()) if self._last_path != path: self._walk_folder = walk_folder.run(path=path) max_level = 4 self.directory_info = list(self._walk_folder.get_children_by_level(level=max_level)) self.add_button('/', self.directory_info) def key_tree_double_clicked(self, selected_index=QModelIndex()): select_data = selected_index.data() ignore_list = [select_data] for item in self._button_list[1:]: ignore_list.append(item[0]) store_dict = dict(self._last_info.get_children_by_key(key=select_data, ignore_list=ignore_list).sort_dictionary) store_list = list() for item in store_dict.values(): store_list.extend(item['children']) store_list = list(set(store_list)) self.add_button(select_data, store_list or list(), ignore_list=ignore_list) def _get_size(self, size): return '{} <> {}%'.format(human_size(size), round(size * 100 / self._walk_folder.total_size, 2)) def _refresh_key_tree(self, directory_info, ignore_list=None): info = LabelInfo(make_dictionary_by_classification(directory_info, ignore_list)) # Clear for _ in range(self.key_tree.topLevelItemCount()): self.key_tree.takeTopLevelItem(0) # Add for k, v in info.sort_dictionary: tree_widget = QTreeWidgetItem() tree_widget.setText(0, k) total_size = 0 for child in v['children']: total_size += child.total_size tree_widget.setText(1, self._get_size(v[constant.sort_size_name])) self.key_tree.addTopLevelItem(tree_widget) self._last_info = info def _refresh_value_tree(self, directory_info): info = sorted(directory_info, key=lambda x: x.total_size, reverse=True) # Clear for _ in range(self.value_tree.topLevelItemCount()): self.value_tree.takeTopLevelItem(0) # Add for item in info: tree_widget = QTreeWidgetItem() tree_widget.setText(0, item.part_path) tree_widget.setText(1, self._get_size(item.total_size)) self.value_tree.addTopLevelItem(tree_widget)