def __init__(self, parent):
		super(UserManagerWidget, self).__init__(parent)
		self.parent = parent

		self.sort_order = 'by_name'

		view.notifier.observers.append(self)

		self.header_label = QLabel('Users')

		self.header_widget = QWidget(self)
		header_layout = QBoxLayout(QBoxLayout.LeftToRight)
		header_layout.addWidget(self.header_label)
		self.header_widget.setLayout(header_layout)

		self.sort_by_name_btn = QPushButton('Sort by Name', self)
		self.sort_by_name_btn.clicked.connect(self.sort_by_name)
		self.sort_by_rank_btn = QPushButton('Sort by Rank', self)
		self.sort_by_rank_btn.clicked.connect(self.sort_by_rank)

		self.sort_btns_widget = QWidget(self)
		sort_btns_layout = QBoxLayout(QBoxLayout.LeftToRight)
		sort_btns_layout.addWidget(self.sort_by_name_btn)
		sort_btns_layout.addSpacing(10)
		sort_btns_layout.addWidget(self.sort_by_rank_btn)
		self.sort_btns_widget.setLayout(sort_btns_layout)

		self.user_list = QTableWidget(style.style_loader.TABLE_INITIAL_LENGTH, 3, self)
		self.user_list.setFixedHeight(300)
		self.user_list.setFixedWidth(400)
		self.user_list.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch)
		self.user_list.verticalHeader().setSectionResizeMode(QHeaderView.Fixed)

		self.user_list_widget = QWidget(self)
		user_list_layout = QBoxLayout(QBoxLayout.LeftToRight)
		user_list_layout.addWidget(self.user_list)
		self.user_list_widget.setLayout(user_list_layout)

		self.add_player_btn = QPushButton('Add User', self)
		self.add_player_btn.clicked.connect(self.parent.show_add_user_widget)
		self.remove_player_btn = QPushButton('Remove User', self)
		self.remove_player_btn.clicked.connect(self.parent.show_remove_user_widget)

		self.player_btns_widget = QWidget(self)
		player_btn_layout = QBoxLayout(QBoxLayout.LeftToRight)
		player_btn_layout.addWidget(self.add_player_btn)
		player_btn_layout.addSpacing(10)
		player_btn_layout.addWidget(self.remove_player_btn)
		self.player_btns_widget.setLayout(player_btn_layout)

		self.error = None

		layout = QFormLayout()
		layout.addRow(self.header_widget)
		layout.addRow(self.sort_btns_widget)
		layout.addRow(self.user_list_widget)
		layout.addRow(self.player_btns_widget)
		self.setLayout(layout)

		self.update()
Beispiel #2
0
    def __init__(self):
        super(MyWindow, self).__init__()
        self.initGUI("PyQt5 学习 QCheckBox")

        layout = QGridLayout()
        self.setLayout(layout)

        self.checkbox1 = QCheckBox("Kestrel")
        self.checkbox1.setToolTip("什么意思")
        # FIXME: 为什么不能显示 WhatsThis?
        self.checkbox1.setWhatsThis("帮助文档也解决不了这个问题")
        self.checkbox1.setChecked(True)
        self.checkbox1.toggled.connect(self.checkbox_toggled)
        layout.addWidget(self.checkbox1, 0, 0)

        self.checkbox2 = QCheckBox("Sparrowhawk")
        self.checkbox2.setWhatsThis("帮助文档:看起来像是什么老鹰")
        self.checkbox2.toggled.connect(self.checkbox_toggled)
        layout.addWidget(self.checkbox2, 1, 0)

        self.checkbox3 = QCheckBox("Hobby")
        self.checkbox3.setToolTip("兴趣爱好")
        self.checkbox3.toggled.connect(self.checkbox_toggled)
        layout.addWidget(self.checkbox3, 2, 0)

        layout2 = QBoxLayout(QBoxLayout.TopToBottom)
        layout.addLayout(layout2, 0, 1)
        layout.setHorizontalSpacing(5)

        self.checkbox4 = QCheckBox("Sex")
        self.checkbox4.setToolTip("三态复选框")
        self.checkbox4.setTristate(True)
        self.checkbox4.setCheckState(True)
        self.checkbox4.toggled.connect(self.checkbox_toggled)
        self.checkbox4.clicked.connect(self.on_clicked)
        layout2.addWidget(self.checkbox4)

        self.checkbox5 = QCheckBox("Age")
        self.checkbox5.setToolTip("两态复选框")
        self.checkbox5.setTristate(False)
        self.checkbox5.setChecked(True)
        self.checkbox5.toggled.connect(self.checkbox_toggled)
        layout2.addWidget(self.checkbox5)

        self.btn = QPushButton("Click Me")
        self.btn.setWhatsThis("点击我呀笨蛋")
        layout2.addSpacing(10)
        layout2.addWidget(self.btn)
 def __init__(self, parent):
     super(EconomyTab, self).__init__()
     mainLayout = QBoxLayout(QBoxLayout.TopToBottom)
     rowLayout = [QBoxLayout(QBoxLayout.LeftToRight) for i in range(2)]
     grandTableLayout = QBoxLayout(QBoxLayout.LeftToRight)
     chartLayout = [QBoxLayout(QBoxLayout.TopToBottom) for i in range(5)]
     self.title = [QLabel("Title " + str(i)) for i in range(5)]
     for i in range(5):
         chartLayout[i].addWidget(self.title[i])
     chartLayout[0].addLayout(grandTableLayout)
     rowLayout[0].addLayout(chartLayout[0])
     rowLayout[0].addLayout(chartLayout[1])
     for i in range(2, 5, 1):
         rowLayout[1].addLayout(chartLayout[i])
     mainLayout.addLayout(rowLayout[0])
     mainLayout.addSpacing(50)
     mainLayout.addLayout(rowLayout[1])
     dataColLayout = [QBoxLayout(QBoxLayout.TopToBottom) for i in range(6)]
     for i in range(5):
         grandTableLayout.addLayout(dataColLayout[i])
     self.gnpCol = [QLabel("Text " + str(i)) for i in range(20)]
     for i in range(20):
         dataColLayout[i // 5].addWidget(self.gnpCol[i])
     tableLayout = [QBoxLayout(QBoxLayout.LeftToRight) for i in range(3)]
     for i in range(3):
         chartLayout[i + 2].addLayout(tableLayout[i])
     self.charts = [BarChart([[randint(10,100) for i in range(8)] for j in range(3)], 1)] + \
         [LineChart([[randint(10,100) for i in range(8)] for j in range(1)]) for k in range(3)]
     chartViews = [QChartView() for i in range(4)]
     chartViews[0].setFixedSize(250, 170)
     _setCharts(self.charts, chartViews)
     for i in range(4):
         chartLayout[i + 1].addWidget(chartViews[i])
     lowChartsColumnLayout = [
         QBoxLayout(QBoxLayout.TopToBottom) for i in range(6)
     ]
     for i in range(6):
         tableLayout[i // 2].addLayout(lowChartsColumnLayout[i])
     self.data = [QLabel("Data " + str(i)) for i in range(12)]
     for i in range(12):
         lowChartsColumnLayout[i // 2].addWidget(self.data[i])
     self.setLayout(mainLayout)
 def __init__(self, parent):
     super(BasicInfoTab, self).__init__()
     mainLayout = QBoxLayout(QBoxLayout.TopToBottom)
     mainTableLayout = QBoxLayout(QBoxLayout.LeftToRight)
     headerLayout = QBoxLayout(QBoxLayout.LeftToRight)
     mainLowerLayout = QBoxLayout(QBoxLayout.LeftToRight)
     column = [QBoxLayout(QBoxLayout.TopToBottom) for i in range(4)]
     lowerColumn = [QBoxLayout(QBoxLayout.TopToBottom) for i in range(2)]
     self.hint = QLabel()
     headerLayout.addSpacing(172)
     headerLayout.addWidget(self.hint)
     self.topHeader = [QLabel(str(i)) for i in range(3)]
     column[0].addSpacing(20)
     for i in range(1, 4):
         column[i].addWidget(self.topHeader[i - 1])
     self.paramName = [QLabel("param " + str(i)) for i in range(20)]
     for i in range(20):
         if i <= 11: column[0].addWidget(self.paramName[i])
         else: lowerColumn[0].addWidget(self.paramName[i])
     self.sprpwrVal = [QLabel("data " + str(i)) for i in range(24)]
     for i in range(24):
         column[1 if i < 12 else 2].addWidget(self.sprpwrVal[i])
     self.otherVal = [QLabel() for i in range(12)]
     for i in self.otherVal:
         column[3].addWidget(i)
     self.infoVal = [QLabel("info " + str(i)) for i in range(8)]
     for i in self.infoVal:
         lowerColumn[1].addWidget(i)
     # Local news section
     self.localNewsGroup = QGroupBox("Local insights")
     self.localNewsLabel = QTextEdit()
     tmp = QBoxLayout(QBoxLayout.LeftToRight)
     tmp.addWidget(self.localNewsLabel)
     self.localNewsGroup.setLayout(tmp)
     # putting it all together
     for i in column:
         mainTableLayout.addLayout(i)
     for i in lowerColumn:
         mainLowerLayout.addLayout(i)
     mainLowerLayout.addSpacing(50)
     mainLowerLayout.addWidget(self.localNewsGroup)
     #preview = QGraphicsView(parent.mapView.scene())
     #preview.setFixedSize(200,200)
     #mainLowerLayout.addWidget(preview)
     mainLayout.addLayout(mainTableLayout)
     mainLayout.addLayout(headerLayout)
     mainLayout.addSpacing(5)
     mainLayout.addLayout(mainLowerLayout)
     self.setLayout(mainLayout)
	def __init__(self, parent):
		super(TournamentOrganizerWidget, self).__init__(parent)
		self.parent = parent

		# Default Players (for quick testing)
		player_names = [
			'Frodo',
			'Sam',
			'Merry',
			'Pippin',
			'Gandalf',
			'Aragorn',
			'Legolas',
			'Gimli',
			'Boromir'
		]
		# for name in player_names:
		# 	to.add_player(name, None)

		self.sort_order = 'by_name'

		view.notifier.observers.append(self)

		self.header_label = QLabel('Players')

		self.header_widget = QWidget(self)
		header_layout = QBoxLayout(QBoxLayout.LeftToRight)
		header_layout.addWidget(self.header_label)
		self.header_widget.setLayout(header_layout)

		self.sort_by_name_btn = QPushButton('Sort by Name', self)
		self.sort_by_name_btn.clicked.connect(self.sort_by_name)
		self.sort_by_rank_btn = QPushButton('Sort by Rank', self)
		self.sort_by_rank_btn.clicked.connect(self.sort_by_rank)

		self.sort_btns_widget = QWidget(self)
		sort_btns_layout = QBoxLayout(QBoxLayout.LeftToRight)
		sort_btns_layout.addWidget(self.sort_by_name_btn)
		sort_btns_layout.addSpacing(10)
		sort_btns_layout.addWidget(self.sort_by_rank_btn)
		self.sort_btns_widget.setLayout(sort_btns_layout)

		self.player_list = QTableWidget(style.style_loader.TABLE_INITIAL_LENGTH, 2, self)
		self.player_list.setHorizontalHeaderLabels(['Name', 'Record'])
		self.player_list.setFixedHeight(300)
		self.player_list.setFixedWidth(400)
		self.player_list.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch)
		self.player_list.verticalHeader().setSectionResizeMode(QHeaderView.Fixed)
		self.player_list.horizontalHeader().setVisible(True)

		self.player_list_widget = QWidget(self)
		player_list_layout = QBoxLayout(QBoxLayout.LeftToRight)
		player_list_layout.addWidget(self.player_list)
		self.player_list_widget.setLayout(player_list_layout)

		self.add_player_btn = QPushButton('Add Player', self)
		self.add_player_btn.clicked.connect(self.parent.show_add_player_widget)
		self.remove_player_btn = QPushButton('Remove Player', self)
		self.remove_player_btn.clicked.connect(self.parent.show_remove_player_widget)

		self.player_btns_widget = QWidget(self)
		player_btn_layout = QBoxLayout(QBoxLayout.LeftToRight)
		player_btn_layout.addWidget(self.add_player_btn)
		player_btn_layout.addSpacing(10)
		player_btn_layout.addWidget(self.remove_player_btn)
		self.player_btns_widget.setLayout(player_btn_layout)

		self.error = None

		layout = QFormLayout()
		layout.addRow(self.header_widget)
		layout.addRow(self.sort_btns_widget)
		layout.addRow(self.player_list_widget)
		layout.addRow(self.player_btns_widget)
		self.setLayout(layout)

		self.update()
class DetectPage(QWidget):

    # 界面绘制
    def __init__(self):
        super().__init__()
        self.setWindowIcon(QIcon('./config/HomePageIcon.png'))  # 设置窗口的图标
        self.set_center()
        self.image = './image/bird.jpg'

        # 第一行
        self.upload_button = QPushButton('上传图片')
        self.detect_button = QPushButton('开始检测')

        h_layout = QHBoxLayout()
        h_layout.setSpacing(15)
        h_layout.addWidget(self.upload_button)
        h_layout.addWidget(self.detect_button)

        self.upload_button.clicked.connect(self.pick_image)  # 绑定事件
        self.detect_button.clicked.connect(self.detect_image)  # 绑定事件

        # 第二行
        self.image_label = QLabel()
        self.image_label.setPixmap(QPixmap(self.image))

        # 第三行
        self.time_line = QLineEdit()
        self.time_line.setEnabled(False)
        self.probability_line = QLineEdit()
        self.probability_line.setEnabled(False)
        self.bird_num = QLineEdit()
        self.bird_num.setEnabled(False)

        form_layout = QFormLayout()
        form_layout.addRow('检测时间:', self.time_line)
        form_layout.addRow('score值:', self.probability_line)
        form_layout.addRow('鸟个数:', self.bird_num)

        # 整体布局
        self.main_layout = QBoxLayout(QBoxLayout.Down)
        self.main_layout.addLayout(h_layout)
        self.main_layout.addSpacing(10)
        self.main_layout.addWidget(self.image_label)
        self.main_layout.addSpacing(10)
        self.main_layout.addLayout(form_layout)
        self.setLayout(self.main_layout)

    # 从本地选择图片
    def pick_image(self):
        image_name, image_type = QFileDialog.getOpenFileName(
            self, "选择图片", "", "*.jpg;;*.png;;")
        self.image = image_name
        self.image_label.setPixmap(QPixmap(self.image))

    # 检测图片,供子类继承
    def detect_image(self):
        pass

    def process_scores(self, scores):
        result = '['
        if len(scores) != 0:
            for score in scores:
                result = result + str('%.3f' % score) + ','
            result = result + ']'
        else:
            result = '没有检测到任何鸟群'
        return result

    # 控制主页显示在屏幕中心
    def set_center(self):
        # 获得窗口
        qr = self.frameGeometry()
        # 获得屏幕中心点
        cp = QDesktopWidget().availableGeometry().center()
        # 显示到屏幕中心
        qr.moveCenter(cp)
        self.move(qr.topLeft())
    def __init__(self, parent):
        super(NewsWindow, self).__init__(parent)
        self.parent = parent
        # top table - news list and filters
        self.table = QTableWidget(0, 5)
        horizLabels = ["", "", "", "", ""]
        self.table.setSelectionBehavior(QAbstractItemView.SelectRows)
        self.table.setSelectionMode(QAbstractItemView.SingleSelection)
        self.table.itemSelectionChanged.connect(self.doDisplayNewsHeadline)
        self.table.setHorizontalHeaderLabels(horizLabels)
        self.table.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch)
        self.table.setWordWrap(True)
        self.table.setEditTriggers(QAbstractItemView.NoEditTriggers)
        topLayout = QGridLayout()
        topLayout.addWidget(self.table, 0, 1)
        filterLayout = QBoxLayout(QBoxLayout.TopToBottom)
        self.filters = [
            QPushButton(parent.graphics.icon[23 + i], "") for i in range(5)
        ]
        filterGroup = QButtonGroup()
        for i, j in zip(self.filters, range(5)):
            i.setFixedSize(120, 32)
            i.setAutoExclusive(True)
            i.setCheckable(True)
            i.released.connect(partial(self.doRefreshNews, j))
            filterGroup.addButton(i)
            filterLayout.addWidget(i)
            filterLayout.addSpacing(-5)
        filterLayout.addSpacing(30)
        filterLayout.setAlignment(Qt.AlignVCenter)
        self.ctryList = QComboBox()
        self.ctryList.setMaxVisibleItems(10)
        self.ctryList.addItems([
            Local.strings[Local.DATA_COUNTRIES + i][Local.CTRY_NAME]
            for i in range(80)
        ])
        self.ctryList.currentIndexChanged.connect(
            partial(self.doRefreshNews, 5))
        self.localNews = QRadioButton()
        self.localNews.released.connect(partial(self.doRefreshNews, 5))
        filterGroup.addButton(self.localNews)
        filterLayout.addWidget(self.localNews)
        filterLayout.addWidget(self.ctryList)
        topLayout.addLayout(filterLayout, 0, 0)
        topLayout.setContentsMargins(-50, 0, 0, 0)
        self.table.setFixedHeight(220)

        # left half - news
        buttons = QBoxLayout(QBoxLayout.LeftToRight)
        leftLayout = QBoxLayout(QBoxLayout.TopToBottom)
        leftLayout.setContentsMargins(-80, 0, 0, 0)
        self.newsHline = QLabel()
        self.newsHline.setWordWrap(True)
        self.newsHline.setFixedHeight(40)
        leftLayout.addSpacing(25)
        leftLayout.addWidget(self.newsHline)
        leftLayout.addSpacing(30)
        self.question = QPushButton()
        self.backDown = QPushButton()
        self.question.released.connect(self.doTough)
        self.backDown.released.connect(self.doLoose)
        for i in (self.question, self.backDown):
            buttons.addWidget(i)
        leftLayout.addLayout(buttons)
        self.reactionLine = QLabel()
        self.reactionLine.setFixedHeight(30)
        self.reactionLine.setWordWrap(True)
        leftLayout.addSpacing(20)
        leftLayout.addWidget(self.reactionLine)
        leftLayout.addSpacing(20)
        leftInfoLayout = [QBoxLayout(QBoxLayout.LeftToRight) for i in range(3)]
        self.leftInfo = [QLabel() for i in range(3)]
        self.leftInfoVal = [QLabel() for i in range(3)]
        for i in range(3):
            leftInfoLayout[i].addWidget(self.leftInfo[i])
            leftInfoLayout[i].addWidget(self.leftInfoVal[i])
            leftLayout.addLayout(leftInfoLayout[i])
            if i < 2: leftLayout.addSpacing(-5)

        # right half - advisory
        rightLayout = QBoxLayout(QBoxLayout.TopToBottom)
        rightLayout.setContentsMargins(0, -50, 0, 0)
        #rightLayout.addWidget(self.advisory)
        headsLayout = QBoxLayout(QBoxLayout.LeftToRight)
        headsColumn = [QBoxLayout(QBoxLayout.TopToBottom) for i in range(2)]
        head = [QBoxLayout(QBoxLayout.LeftToRight) for i in range(4)]
        self.picture = [QLabel() for i in range(4)]
        self.advice = [QLabel() for i in range(4)]
        for i in range(4):
            self.picture[i].setPixmap(parent.graphics.advisor[i])
            self.advice[i].setWordWrap(True)
            self.advice[i].setFixedWidth(100)
            head[i].addWidget(self.picture[i])
            head[i].addWidget(self.advice[i])
            headsColumn[i // 2].addLayout(head[i])
        self.closeUpButton = QPushButton()

        for i in range(2):
            headsLayout.addLayout(headsColumn[i])
        rightLayout.addLayout(headsLayout)

        # save right and left layouts into groups
        self.detailGroup = [QGroupBox() for i in range(3)]
        self.detailGroup[0].setLayout(leftLayout)
        self.detailGroup[1].setLayout(rightLayout)
        self.detailGroup[2].setLayout(topLayout)

        mainLayout = QGridLayout()
        mainLayout.addWidget(self.detailGroup[2], 0, 0, 1, 2)
        for i in range(2):
            mainLayout.addWidget(self.detailGroup[i], 1, i)

        self.setStrings()
        self.setLayout(mainLayout)
        self.setFixedSize(830, 590)
        self.setModal(True)