完整数字华容道03:首页创建


上一节已经将所有的页面样式都介绍了,本节将完成首页的创建。

1、首页布局

首页布局如下图所示:

首页

整个布局采用 QVBoxLayout (竖型布局)。最上方的“数字华容道”字样是一张图片,采用QLabel进行展示。下面几个选择难度的按钮和排行榜按钮采用 QPushButton

2、代码实现

新建一个 HomePage.py 文件,以下代码都在该文件下实现。

2.2 显示图片

使用 QPixmap 加载图片,QLabel 显示图片。

# 图片
pic_dir = os.path.abspath('.') + '\\src\\images\\数字华容道.png'
lbImg = QLabel()
lbImg.setFixedSize(380, 160)
lbImg.setScaledContents(True)
lbImg.setPixmap(QPixmap(pic_dir))

2.2 文字提示

使用 QLabel 显示文字,并设置相应的字体。

# 文字提示
		lbTip = QLabel('请您选择游戏难度')
		lbTip.setFixedHeight(30)
		font = QFont()
		font.setPointSize(20)
		lbTip.setFont(font)

2.3 游戏难度按钮

如上图所示,选择难度的四个按钮除了文字不同外,样式完全相同,那么我们新建一个按钮类。

class StyledButton(QPushButton):
	"""自定义按钮类"""
	def __init__(self, txt):
		super(StyledButton, self).__init__()
		self.txt = txt
		self.init()

	def init(self):
		# 设置按钮文本
		self.setText(self.txt)

		# 设置按钮大小
		self.setFixedSize(240, 40)

		# 设置按钮样式
		self.setStyleSheet('''border-radius:10px;
			padding:2px 4px;
			color: white;
			background-color:rgb(255, 153, 204);
			font-size: 20px;''')

只需要设置按钮上显示的文字即可。

# 游戏难度按钮
self.btn3_3 = StyledButton('3 X 3')
self.btn4_4 = StyledButton('4 X 4')
self.btn5_5 = StyledButton('5 X 5')
self.btn6_6 = StyledButton('6 X 6')

2.4 排行榜按钮

# 排行榜按钮
self.btnRanking = QPushButton("排行榜")
self.btnRanking.setFixedSize(100, 30)
self.btnRanking.setStyleSheet('''border-radius:10px;
			padding:2px 4px;
			background-color:white;
			font-size: 20px;''')

2.5 布局

将上述各个部分加入一个 QVBoxLayout

# 布局,水平居中
self.addSpacing(50)
self.addWidget(lbImg, 0, Qt.AlignHCenter)
self.addSpacing(15)
self.addWidget(lbTip, 0, Qt.AlignHCenter)
self.addSpacing(15)
self.addWidget(self.btn3_3, 0, Qt.AlignHCenter)
self.addSpacing(20)
self.addWidget(self.btn4_4, 0, Qt.AlignHCenter)
self.addSpacing(20)
self.addWidget(self.btn5_5, 0, Qt.AlignHCenter)
self.addSpacing(20)
self.addWidget(self.btn6_6, 0, Qt.AlignHCenter)
self.addSpacing(20)
self.addWidget(self.btnRanking, 0, Qt.AlignRight)
self.addStretch()

3、首页引入及测试

NumberHuaRong.py 中添加如下代码引入 首页:

from HomePage import HomePage

MainForm 类做如下修改

class MainForm(QWidget):
    '''游戏窗口'''
    def __init__(self):
        super(MainForm, self).__init__()
        self.hp = HomePage()
        self.initUI()

    def initUI(self):
        self.setLayout(self.hp)
        self.setFixedSize(400, 600)
        self.setWindowTitle('数字华容道')
        self.setStyleSheet("background-color:lightblue;")
        self.show()

        # 按钮测试
        self.hp.btn3_3.clicked.connect(self.print3)
        self.hp.btn4_4.clicked.connect(self.print4)
        self.hp.btn5_5.clicked.connect(self.print5)
        self.hp.btn6_6.clicked.connect(self.print6)
        self.hp.btnRanking.clicked.connect(self.ranking)

    def print3(self):
        print(3)

    def print4(self):
        print(4)

    def print5(self):
        print(5)

    def print6(self):
        print(6)

    def ranking(self):
        print("排行榜")

分别点击各个按钮,会打印出相应的信息:

首页按钮测试

本文所有代码及资源链接:链接:https://pan.baidu.com/s/11PfQpSnpppVPaOkRKSMG2A 密码:9ecv

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

C与Python实战

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值