示例#1
0
def move_window_to_cursor(widget: QWidget):
    width, height = widget.width(), widget.height()
    pos = QCursor.pos()
    pos.setX(pos.x() - width / 2)
    pos.setY(pos.y() - height / 2)

    widget.move(pos)
from PyQt5.Qt import QApplication, QWidget, QLabel
import sys

if __name__ == '__main__':
    # 创建QApplication类的实例
    app = QApplication(sys.argv)
    # 创建一个窗口
    window = QWidget()
    # 设置窗口标题
    window.setWindowTitle('Hello World!')
    # 设置窗口尺寸
    window.resize(400, 400)
    # 移动窗口位置
    window.move(1000, 300)
    # 创建label控件
    label = QLabel(window)
    # 为控件设置文本
    label.setText('Hello World!')
    # 移动空间的位置
    label.move(160, 160)
    # 显示窗口
    window.show()
    # 进入程序的主循环,并通过exit函数确保主循环安全结束
    sys.exit(app.exec_())
示例#3
0
class SingleRank(QWidget):
    single_rk_comeback_sg = pyqtSignal()
    detail_sg = pyqtSignal(str)

    def __init__(self, parent=None):
        super(SingleRank, self).__init__(parent)
        self.desktop = QApplication.desktop()
        self.screenRect = self.desktop.screenGeometry()
        self.h = self.screenRect.height()
        self.w = self.screenRect.width()
        self.xr = self.w / 930
        self.yr = self.h / 640
        self.zr = min(self.xr, self.yr)
        self.inlist = {}
        self.back2_wi = QWidget(self)
        self.rankexit_but = QPushButton(self)
        self.header1 = QLabel(self.back2_wi)
        self.comeback_but = QPushButton(self.back2_wi)
        self.next_but = QPushButton(self.back2_wi)
        self.table = QWidget(self.back2_wi)
        self.tablein = QGridLayout()
        self.headers = ['对局id', '分数', '时间', '详情']
        self.set_ui()
        with open('rank.qss', 'r') as f:
            self.setStyleSheet(f.read())

    def set_ui(self):
        self.setWindowTitle('SingleRank')
        self.setObjectName('singlerank')
        self.resize(self.w, self.h)
        effect = QGraphicsDropShadowEffect()
        effect.setOffset(10, 10)
        effect.setColor(QColor(0, 0, 0, 80))
        effect.setBlurRadius(20)
        effect1 = QGraphicsDropShadowEffect()
        effect1.setOffset(10, 10)
        effect1.setColor(QColor(0, 0, 0, 80))
        effect1.setBlurRadius(20)
        self.back2_wi.setObjectName('back')
        self.back2_wi.resize(self.xr * 793, self.yr * 534)
        self.back2_wi.move(self.xr * 69, self.yr * 53)
        self.back2_wi.setGraphicsEffect(effect)
        self.header1.setObjectName('header')
        self.header1.resize(self.xr * 172, self.yr * 36)
        self.header1.move(self.xr * 24, self.yr * 10)
        self.header1.setText('过往战绩')
        self.header1.setAlignment(Qt.AlignCenter)
        self.comeback_but.setObjectName('comeback')
        self.comeback_but.resize(self.xr * 80, self.yr * 36)
        self.comeback_but.move(self.xr * 67, self.yr * 467)
        self.comeback_but.setText('返回')
        self.comeback_but.clicked.connect(self.come_back)
        self.comeback_but.setGraphicsEffect(effect1)
        self.next_but.setObjectName('next')
        self.next_but.resize(self.zr * 38, self.zr * 38)
        self.next_but.move(self.xr * 725, self.yr * 468)
        self.next_but.setStyleSheet('border-radius:{}px;'.format(self.zr * 18))
        self.next_but.clicked.connect(self.next)
        self.table.setObjectName('table')
        self.table.resize(self.xr * 746, self.yr * 382)
        self.table.move(self.xr * 24, self.yr * 61)
        self.tablein.setSpacing(0)
        self.tablein.setContentsMargins(0, 0, 0, 0)
        self.table.setLayout(self.tablein)
        li = ['#f5f0e3', '#cccccc']
        for i in range(0, 5):
            for j in range(0, 4):
                if j == 3 and i != 0:
                    exec('self.tableheader{}_{} = QPushButton()'.format(i, j))
                    exec(
                        'self.tableheader{}_{}.setMinimumHeight(self.yr *382/5)'
                        .format(i, j))
                    exec('self.tableheader{}_{}.setText("详情")'.format(i, j))
                    exec(
                        'self.tableheader{}_{}.clicked.connect(self.details{})'
                        .format(i, j, i))
                else:
                    exec('self.tableheader{}_{} = QLabel()'.format(i, j))
                    exec('self.tableheader{}_{}.setAlignment(Qt.AlignCenter)'.
                         format(i, j))
                if i == 0:
                    exec('self.tableheader{}_{}.setObjectName("table_head")'.
                         format(i, j))
                    exec('self.tableheader{}_{}.setText("{}")'.format(
                        i, j, self.headers[j]))
                else:
                    exec('self.tableheader{}_{}.setObjectName("table_unit")'.
                         format(i, j))
                exec(
                    'self.tableheader{}_{}.setStyleSheet("background-color:{};")'
                    .format(i, j, li[(i + j) % 2]))
                exec('self.tablein.addWidget(self.tableheader{}_{}, {}, {})'.
                     format(i, j, i, j))
        self.back2_wi.setStyleSheet('#back{border-radius:' +
                                    str(self.zr * 20) +
                                    'px;}#header{border-radius:' +
                                    str(self.zr * 15) + 'px;font-size:' +
                                    str(int(self.zr * 18)) +
                                    'px;}#comeback{border-radius:' +
                                    str(self.zr * 15) + 'px;font-size:' +
                                    str(int(self.zr * 16)) +
                                    'px;}#table_unit{font-size:' +
                                    str(int(self.zr * 18)) +
                                    'px;}#table_head{font-size:' +
                                    str(int(self.zr * 20)) +
                                    'px;font-weight:bold}')

    def come_back(self):
        self.single_rk_comeback_sg.emit()

    def get_list(self, info):
        if len(info) >= 4:
            li = info[:4]
            self.inlist = info[4:]
        else:
            li = info
            self.inlist = info
        self.set_table(li)

    def set_table(self, mp):
        lens = len(mp)
        for i in range(1, lens + 1):
            self.next_but.setEnabled(True)
            exec('self.tableheader{}_0.setText("{}")'.format(
                i, mp[i - 1]['id']))
            exec('self.tableheader{}_1.setText("{}")'.format(
                i, mp[i - 1]['score']))
            exec('self.tableheader{}_2.setText("{}")'.format(
                i, mp[i - 1]['time']))
        if lens < 4:
            for i in range(lens + 1, 5):
                self.next_but.setEnabled(False)
                exec('self.tableheader{}_0.clear()'.format(i))
                exec('self.tableheader{}_1.clear()'.format(i))
                exec('self.tableheader{}_2.clear()'.format(i))

    def next(self):
        if len(self.inlist) >= 4:
            li = self.inlist[:4]
            self.inlist = self.inlist[4:]
        else:
            li = self.inlist
        self.set_table(li)

    def details1(self):
        if self.tableheader1_0.text() != '':
            self.detail_sg.emit(self.tableheader1_0.text())

    def details2(self):
        if self.tableheader2_0.text() != '':
            self.detail_sg.emit(self.tableheader2_0.text())

    def details3(self):
        if self.tableheader3_0.text() != '':
            self.detail_sg.emit(self.tableheader3_0.text())

    def details4(self):
        if self.tableheader4_0.text() != '':
            self.detail_sg.emit(self.tableheader4_0.text())
示例#4
0
class Index(QWidget):
    show_mainindex_sg = pyqtSignal(int, str)
    show_register_sg = pyqtSignal()

    def __init__(self, parent=None):
        super(Index, self).__init__(parent)
        self.desktop = QApplication.desktop()
        self.screenRect = self.desktop.screenGeometry()
        self.h = self.screenRect.height()
        self.w = self.screenRect.width()
        self.xr = self.w / 930
        self.yr = self.h / 640
        self.zr = min(self.xr, self.yr)
        self.top_wi = QWidget(self)
        self.logo_la = QLabel(self.top_wi)
        self.ind_wi = QWidget(self)
        self.login_but = QPushButton(self.ind_wi)
        self.joke_but = QPushButton(self.ind_wi)
        self.register_but = QPushButton(self.ind_wi)
        self.imp_la = QLabel(self.ind_wi)
        self.account_le = QLineEdit(self.ind_wi)
        self.psw_le = QLineEdit(self.ind_wi)
        self.loading = QLabel(self)
        self.gif = QMovie('./resource/image/load.gif')
        self.set_ui()
        with open('index.qss', 'r') as f:
            self.setStyleSheet(f.read())

    def set_ui(self):
        self.setWindowTitle('Login')
        self.setObjectName('index')
        self.resize(self.w, self.h)
        self.top_wi.setObjectName('top')
        self.top_wi.resize(930 * self.xr, 95 * self.yr)
        self.logo_la.setObjectName('logo')
        self.logo_la.resize(65 * self.xr, 65 * self.zr)
        self.logo_la.move(29 * self.xr, 16 * self.yr)
        effect = QGraphicsDropShadowEffect()
        effect.setOffset(10, 10)
        effect.setColor(QColor(0, 0, 0, 80))
        effect.setBlurRadius(20)
        self.ind_wi.setObjectName('login')
        self.ind_wi.resize(327 * self.xr, 388 * self.yr)
        self.ind_wi.move(300 * self.xr, 150 * self.yr)
        self.ind_wi.setGraphicsEffect(effect)
        self.joke_but.setObjectName('joke')
        self.joke_but.resize(130 * self.xr, 30 * self.yr)
        self.joke_but.move(76 * self.xr, 234 * self.yr)
        self.joke_but.setFlat(True)
        self.joke_but.setText('忘记密码?我也没办法')
        self.login_but.setObjectName('button')
        self.login_but.move(64 * self.xr, 260 * self.yr)
        self.login_but.resize(202 * self.xr, 45 * self.yr)
        self.login_but.setText('登陆')
        self.login_but.clicked.connect(self.login)
        self.register_but.setObjectName('button')
        self.register_but.move(64 * self.xr, 315 * self.yr)
        self.register_but.resize(202 * self.xr, 45 * self.yr)
        self.register_but.setText('注册')
        self.register_but.clicked.connect(self.show_register)
        self.imp_la.setObjectName('imp_label')
        self.imp_la.resize(100 * self.zr, 100 * self.zr)
        self.imp_la.move(115 * self.xr + 100 * (self.xr - self.zr) / 2, 15 * self.yr)
        self.imp_la.setStyleSheet('border-radius:{}px;'.format(self.zr * 49))
        self.account_le.setObjectName('input')
        self.account_le.setTextMargins(20, 0, 0, 0)
        self.account_le.resize(213 * self.xr, 45 * self.yr)
        self.account_le.move(59 * self.xr, 126 * self.yr)
        self.account_le.setPlaceholderText('账号')
        self.psw_le.setObjectName('input')
        self.psw_le.setTextMargins(20, 0, 0, 0)
        self.psw_le.resize(213 * self.xr, 45 * self.yr)
        self.psw_le.move(59 * self.xr, 181 * self.yr)
        self.psw_le.setPlaceholderText('密码')
        self.psw_le.setEchoMode(QLineEdit.Password)
        self.loading.setObjectName('load')
        self.loading.resize(self.xr * 150, self.yr * 150)
        self.loading.move(self.xr * 760, self.yr * 500)
        self.loading.setScaledContents(True)
        self.loading.setMovie(self.gif)
        self.gif.start()
        self.ind_wi.setStyleSheet('#input{border-radius:' + str(self.zr * 20) + 'px;}' + '#button{border-radius:' + str(
            self.zr * 20) + 'px;' + 'font-size:' + str(int(self.zr * 18)) + 'px;}')

    def login(self):
        account_p = self.account_le.text()
        psw_p = self.psw_le.text()
        dic = login(account_p, psw_p)
        if dic['status'] == 0:
            self.show_mainindex_sg.emit(dic['data']['user_id'], dic['data']['token'])
        elif dic['status'] == 1:
            self.account_le.clear()
            self.psw_le.clear()
            self.account_le.setStyleSheet('border:4px solid;border-color:red;')
            self.account_le.setPlaceholderText('网络超时')
        else:
            self.account_le.clear()
            self.psw_le.clear()
            self.account_le.setStyleSheet('border:4px solid;border-color:red;')
            self.account_le.setPlaceholderText('账号不存在或密码错误')

    def show_register(self):
        self.show_register_sg.emit()
示例#5
0
class ResultSingle(QWidget):
    result_exit_sg = pyqtSignal()

    def __init__(self, parent=None):
        super(ResultSingle, self).__init__(parent)
        self.desktop = QApplication.desktop()
        self.screenRect = self.desktop.screenGeometry()
        self.h = self.screenRect.height()
        self.w = self.screenRect.width()
        self.xr = self.w / 930
        self.yr = self.h / 640
        self.zr = min(self.xr, self.yr)
        self.back1_wi = QWidget(self)
        self.resexit_but = QPushButton(self)
        self.id_head = QLabel(self.back1_wi)
        self.role1 = QWidget(self.back1_wi)
        self.role1_detail = QWidget(self.role1)
        self.role4 = QWidget(self.back1_wi)
        self.role4_detail = QWidget(self.role4)
        self.role4_special = QLabel(self.role4)
        self.set_ui()
        with open('result.qss', 'r') as f:
            self.setStyleSheet(f.read())

    def set_ui(self):
        self.setWindowTitle('Result')
        self.setObjectName('result')
        self.resize(self.w, self.h)
        effect = QGraphicsDropShadowEffect()
        effect.setOffset(10, 10)
        effect.setColor(QColor(0, 0, 0, 80))
        effect.setBlurRadius(20)
        self.back1_wi.setObjectName('back')
        self.back1_wi.resize(self.xr * 793, self.yr * 534)
        self.back1_wi.move(self.xr * 69, self.yr * 53)
        self.back1_wi.setGraphicsEffect(effect)
        back_x = 69
        back_y = 53
        effect1 = QGraphicsDropShadowEffect()
        effect1.setOffset(10, 10)
        effect1.setColor(QColor(0, 0, 0, 80))
        effect1.setBlurRadius(20)
        effect4 = QGraphicsDropShadowEffect()
        effect4.setOffset(10, 10)
        effect4.setColor(QColor(0, 0, 0, 80))
        effect4.setBlurRadius(20)
        self.resexit_but.setObjectName('resexit')
        self.resexit_but.resize(self.zr * 38, self.zr * 38)
        self.resexit_but.move(self.xr * 834, self.yr * 36)
        self.resexit_but.clicked.connect(self.result_exit)
        self.resexit_but.setStyleSheet('border-radius:{}px;'.format(self.zr * 18))
        self.id_head.setObjectName('id_head')
        self.id_head.resize(self.xr * 350, self.yr * 140)
        self.id_head.move(self.xr * 225, self.yr * 195)
        # self.id_head.setText('战局ID:4396')
        self.id_head.setAlignment(Qt.AlignCenter)
        self.id_head.setStyleSheet('font-size:{}px;'.format(int(self.zr * 50)))
        self.role1.setObjectName('role')
        self.role1.resize(self.xr * 716, self.yr * 87)
        self.role1.move(self.xr * (108 - back_x), self.yr * (77 - back_y))
        self.role1.setGraphicsEffect(effect1)
        # self.role1_head.setText('test')
        self.role1_detail.setObjectName('role_detail')
        self.role1_detail.resize(self.xr * 606, self.yr * 87)
        self.role1_detail.move(self.xr * 110, self.yr * 0)
        self.role4.setObjectName('role')
        self.role4.resize(self.xr * 716, self.yr * 87)
        self.role4.move(self.xr * (108 - back_x), self.yr * (467 - back_y))
        self.role4.setGraphicsEffect(effect4)
        self.role4_detail.setObjectName('role_detail')
        self.role4_detail.resize(self.xr * 606, self.yr * 87)
        self.role4_detail.move(self.xr * 110, self.yr * 0)
        self.role4_special.setObjectName('role_special')
        self.role4_special.resize(self.xr * 88, self.yr * 36)
        self.role4_special.move(self.xr * 70, self.yr * 26)
        self.role4_special.setAlignment(Qt.AlignCenter)
        for i in range(1, 14):
            if i >= 9:
                xp = 416
                t = 9
            elif i >= 4:
                xp = 239
                t = 4
            else:
                xp = 108
                t = 1
            if i == 3 or i == 8 or i == 13:
                exec('self.role4_lv{}=QLabel(self.role4_detail)'.format(i))
                exec('self.role4_lv{}.resize(self.xr*46,self.yr*67)'.format(i))
                exec('self.role4_lv{}.move(self.xr*(xp+({}-t)*20)+90,self.yr*10)'.format(i, i))
                exec('self.role4_lv{}.setStyleSheet("font-size:{}px;")'.format(i, int(self.zr * 17)))
                # exec('self.role4_lv{}.setText(change_vertical(" 葫芦"))'.format(i))
                exec('self.role4_lv{}.setAlignment(Qt.AlignCenter)'.format(i))
            exec('self.role1_card{}=QLabel(self.role1_detail)'.format(i))
            exec('self.role1_card{}.setObjectName("card")'.format(i))
            exec('self.role1_card{}.resize(self.xr*46,self.yr*67)'.format(i))
            exec('self.role1_card{}.move(self.xr*i*33,self.yr*10)'.format(i))
            exec('self.role1_card{}.setScaledContents(True)'.format(i))
            exec('self.role4_card{}=QLabel(self.role4_detail)'.format(i))
            exec('self.role4_card{}.setObjectName("card")'.format(i))
            exec('self.role4_card{}.resize(self.xr*46,self.yr*67)'.format(i))
            exec('self.role4_card{}.move(self.xr*(xp+({}-t)*20),self.yr*10)'.format(i, i))
            exec('self.role4_card{}.setScaledContents(True)'.format(i))
        self.back1_wi.setStyleSheet(
            '#back{border-radius:' + str(self.zr * 25) + 'px;}#role{border-radius:' + str(
                self.zr * 18) + 'px;}#role_head{border-radius:' + str(self.zr * 15) + 'px;font-size:' + str(
                int(self.zr * 16)) + 'px;}#role_special{font-size:' + str(int(self.zr * 18)) + 'px;}')

    def result_exit(self):
        self.result_exit_sg.emit()

    def set_role(self, info):
        self.id_head.setText('战局ID:{}'.format(info['id']))
        self.role4_special.setText('{}'.format('散牌'))
        i = 1
        for card in info['origin_cards']:
            exec('self.role1_card{}.setPixmap(QPixmap("./resource/image/{}.jpg"))'.format(i, card))
            i += 1
        t = 3
        j = 1
        for de in info['cards']:
            exec('self.role4_lv{}.setText("{}")'.format(t, de['lv']))
            for card in de["card"]:
                exec('self.role4_card{}.setPixmap(QPixmap("./resource/image/{}.jpg"))'.format(j, card))
                j += 1
            t += 5
示例#6
0
class Register(QWidget):
    register_ok_sg = pyqtSignal()

    def __init__(self, parent=None):
        super(Register, self).__init__(parent)
        self.desktop = QApplication.desktop()
        self.screenRect = self.desktop.screenGeometry()
        self.h = self.screenRect.height()
        self.w = self.screenRect.width()
        self.xr = self.w / 930
        self.yr = self.h / 640
        self.zr = min(self.xr, self.yr)
        self.top_wi = QWidget(self)
        self.logo_la = QLabel(self.top_wi)
        self.ind_wi = QWidget(self)
        self.register_but = QPushButton(self.ind_wi)
        self.imp_la = QLabel(self.ind_wi)
        self.account_le = QLineEdit(self.ind_wi)
        self.psw_le = QLineEdit(self.ind_wi)
        self.name_le = QLineEdit(self.ind_wi)
        self.set_ui()
        with open('index.qss', 'r') as f:
            self.setStyleSheet(f.read())

    def set_ui(self):
        self.setWindowTitle('Register')
        self.setObjectName('register')
        self.resize(self.w, self.h)
        self.top_wi.setObjectName('top')
        self.top_wi.resize(930 * self.xr, 95 * self.yr)
        self.logo_la.setObjectName('logo')
        self.logo_la.resize(65 * self.xr, 65 * self.zr)
        self.logo_la.move(29 * self.xr, 16 * self.yr)
        effect = QGraphicsDropShadowEffect()
        effect.setOffset(10, 10)
        effect.setColor(QColor(0, 0, 0, 80))
        effect.setBlurRadius(20)
        self.ind_wi.setObjectName('login')
        self.ind_wi.resize(327 * self.xr, 388 * self.yr)
        self.ind_wi.move(300 * self.xr, 150 * self.yr)
        self.ind_wi.setGraphicsEffect(effect)
        self.register_but.setObjectName('button')
        self.register_but.move(64 * self.xr, 315 * self.yr)
        self.register_but.resize(202 * self.xr, 45 * self.yr)
        self.register_but.setText('注册新用户')
        self.register_but.clicked.connect(self.register)
        self.imp_la.setObjectName('imp_label')
        self.imp_la.resize(100 * self.zr, 100 * self.zr)
        self.imp_la.move(115 * self.xr + 100 * (self.xr - self.zr) / 2,
                         15 * self.yr)
        self.imp_la.setStyleSheet('border-radius:{}px;'.format(self.zr * 49))
        self.account_le.setObjectName('input')
        self.account_le.setTextMargins(20, 0, 0, 0)
        self.account_le.resize(213 * self.xr, 45 * self.yr)
        self.account_le.move(59 * self.xr, 126 * self.yr)
        self.account_le.setPlaceholderText('账号')
        self.psw_le.setObjectName('input')
        self.psw_le.setTextMargins(20, 0, 0, 0)
        self.psw_le.resize(213 * self.xr, 45 * self.yr)
        self.psw_le.move(59 * self.xr, 181 * self.yr)
        self.psw_le.setPlaceholderText('密码')
        self.psw_le.setEchoMode(QLineEdit.Password)
        self.name_le.setObjectName('input')
        self.name_le.setTextMargins(20, 0, 0, 0)
        self.name_le.resize(213 * self.xr, 45 * self.yr)
        self.name_le.move(59 * self.xr, 236 * self.yr)
        self.name_le.setPlaceholderText('昵称')
        self.ind_wi.setStyleSheet('#input{border-radius:' + str(self.zr * 20) +
                                  'px;}' + '#button{border-radius:' +
                                  str(self.zr * 20) + 'px;' + 'font-size:' +
                                  str(int(self.zr * 18)) + 'px;}')

    def register(self):
        account_p = self.account_le.text()
        psw_p = self.psw_le.text()
        # name_p = self.name_le.text()
        dic = register(account_p, psw_p)
        if dic['status'] == 1001:
            self.account_le.clear()
            self.psw_le.clear()
            self.account_le.setStyleSheet('border:4px solid;border-color:red;')
            self.account_le.setPlaceholderText('账号已存在')
        elif dic['status'] == 0:
            self.register_ok_sg.emit()
        else:
            self.account_le.clear()
            self.psw_le.clear()
            self.account_le.setStyleSheet('border:4px solid;border-color:red;')
            self.account_le.setPlaceholderText('未知错误')
示例#7
0
class Home(QWidget):
    home_exit_sg = pyqtSignal()
    rank_sg = pyqtSignal(list)
    single_rank_sg = pyqtSignal(list)

    def __init__(self, parent=None):
        super(Home, self).__init__(parent)
        self.desktop = QApplication.desktop()
        self.screenRect = self.desktop.screenGeometry()
        self.h = self.screenRect.height()
        self.w = self.screenRect.width()
        self.xr = self.w / 930
        self.yr = self.h / 640
        self.zr = min(self.xr, self.yr)
        self.id_p = 0
        self.token = ''
        self.vertical_img = QLabel(self)
        self.role_data_wi = QWidget(self)
        self.rankexit_but = QPushButton(self)
        self.role_header = QLabel(self.role_data_wi)
        self.role_name = QLabel(self.role_data_wi)
        self.role_rank = QPushButton(self.role_data_wi)
        self.ranking = QPushButton(self.role_data_wi)
        self.role_details = QWidget(self.role_data_wi)
        self.bigcard_la = QLabel(self.role_details)
        self.bigcard_wi = QWidget(self.role_details)
        self.rate_la = QLabel(self.role_details)
        self.rate_wi = QLabel(self.role_details)
        self.role_special = QLabel(self.bigcard_wi)
        self.set_ui()
        with open('home.qss', 'r') as f:
            self.setStyleSheet(f.read())

    def set_ui(self):
        self.setWindowTitle('Home')
        self.setObjectName('home')
        self.resize(self.w, self.h)
        effect = QGraphicsDropShadowEffect()
        effect.setOffset(10, 10)
        effect.setColor(QColor(0, 0, 0, 80))
        effect.setBlurRadius(20)
        self.vertical_img.setObjectName('vertical')
        self.vertical_img.resize(self.xr * 205, self.yr * 534)
        self.vertical_img.move(self.xr * 79, self.yr * 39)
        self.role_data_wi.setObjectName('role_data_wi')
        self.role_data_wi.resize(self.xr * 552, self.yr * 534)
        self.role_data_wi.move(self.xr * 320, self.yr * 39)
        self.role_data_wi.setGraphicsEffect(effect)
        self.rankexit_but.setObjectName('resexit')
        self.rankexit_but.resize(self.zr * 38, self.zr * 38)
        self.rankexit_but.move(self.xr * 852, self.yr * 22)
        self.rankexit_but.clicked.connect(self.home_exit)
        self.rankexit_but.setStyleSheet('border-radius:{}px;'.format(self.zr *
                                                                     18))
        self.role_header.setObjectName('role_header')
        self.role_header.resize(self.zr * 70, self.zr * 70)
        self.role_header.move(self.xr * 38, self.yr * 10)
        self.role_name.setObjectName('role_name')
        self.role_name.resize(self.xr * 129, self.yr * 43)
        self.role_name.move(self.xr * 129, self.yr * 21)
        self.role_name.setStyleSheet('border-radius:{}px;'.format(self.zr *
                                                                  18))
        effect1 = QGraphicsDropShadowEffect()
        effect1.setOffset(10, 10)
        effect1.setColor(QColor(0, 0, 0, 80))
        effect1.setBlurRadius(20)
        effect2 = QGraphicsDropShadowEffect()
        effect2.setOffset(10, 10)
        effect2.setColor(QColor(0, 0, 0, 80))
        effect2.setBlurRadius(20)
        self.role_rank.setObjectName('button')
        self.role_rank.resize(self.xr * 120, self.yr * 31)
        self.role_rank.move(self.xr * 269, self.yr * 27)
        self.role_rank.setText('个人战绩')
        self.role_rank.setGraphicsEffect(effect1)
        self.role_rank.clicked.connect(self.show_single_rank)
        self.ranking.setObjectName('button')
        self.ranking.resize(self.xr * 120, self.yr * 31)
        self.ranking.move(self.xr * 399, self.yr * 27)
        self.ranking.setText('排行榜')
        self.ranking.setGraphicsEffect(effect2)
        self.ranking.clicked.connect(self.show_rank)
        self.role_details.setObjectName('role_details')
        self.role_details.resize(self.xr * 500, self.yr * 435)
        self.role_details.move(self.xr * 28, self.yr * 89)
        self.bigcard_la.setObjectName('icon')
        self.bigcard_la.resize(self.xr * 120, self.yr * 23)
        self.bigcard_la.move(self.xr * 12, self.yr * 34)
        self.bigcard_la.setText('最近大牌')
        self.bigcard_la.setAlignment(Qt.AlignCenter)
        self.bigcard_wi.setObjectName('bigcard')
        self.bigcard_wi.resize(self.xr * 477, self.yr * 120)
        self.bigcard_wi.move(self.xr * 12, self.yr * 84)
        for i in range(1, 14):
            if i >= 9:
                xp = 330
                t = 9
            elif i >= 4:
                xp = 190
                t = 4
            else:
                xp = 90
                t = 1
            exec('self.role_card{}=QLabel(self.bigcard_wi)'.format(i))
            exec('self.role_card{}.setObjectName("card")'.format(i))
            exec('self.role_card{}.resize(self.xr*40,self.yr*60)'.format(i))
            exec('self.role_card{}.move(self.xr*(xp+({}-t)*20),self.yr*26)'.
                 format(i, i))
        self.role_special.setObjectName('role_special')
        self.role_special.resize(self.xr * 65, self.yr * 32)
        self.role_special.move(self.xr * 15, self.yr * 40)
        self.rate_la.setObjectName('icon')
        self.rate_la.resize(self.xr * 120, self.yr * 23)
        self.rate_la.move(self.xr * 12, self.yr * 234)
        self.rate_la.setText('近期趋势')
        self.rate_la.setAlignment(Qt.AlignCenter)
        self.rate_wi.setObjectName('rate')
        self.rate_wi.resize(self.xr * 477, self.yr * 120)
        self.rate_wi.move(self.xr * 12, self.yr * 284)
        self.role_data_wi.setStyleSheet('#role_data_wi{border-radius:' +
                                        str(self.zr * 20) +
                                        'px;}#role_header{border-radius:' +
                                        str(self.zr * 30) +
                                        'px;}#button{border-radius:' +
                                        str(self.zr * 15) + 'px;font-size:' +
                                        str(int(self.zr * 15)) +
                                        'px;}#icon{border-radius:' +
                                        str(self.zr * 10) + 'px;font-size:' +
                                        str(int(self.zr * 15)) + 'px;}')

    def home_exit(self):
        self.home_exit_sg.emit()

    def show_rank(self):
        res = rank()
        if res['status'] == 0:
            self.rank_sg.emit(res['details'])

    def show_single_rank(self):
        res = srank(self.id_p, self.token)
        if res['status'] == 0:
            self.single_rank_sg.emit(res['details'])

    def get_id(self, s):
        self.id_p = s

    def get_token(self, t):
        self.token = t