Python GUI tkinter库 自学12

计算器软件页面设置

  • 1、一个经典的面向程序写法模块
  • 2、布局管理器代码(grid)
  • 3、源代码

1、一个经典的面向程序写法模块

from tkinter import *
from tkinter import messagebox
# 导入库文件

class Appication(Frame):
    """
    一个经典的 GUI 类的写法
    """
    # 定义类(Appication)、继承于 Frame 框架 (虚拟的矩形框架)
    def __init__(self, master = None):
        # 定义构造函数、并初始化父类为空
        super().__init__(master)
        # 通过 super() 调用父类、并将 master 传进去
        self.master = master
        # 令此类中的 master 等于传入的 window
        self.pack()
        # 布局此窗口

        self.CreateWidget()
        # 调用另一个函数 CreateWidget

    def CreateWidget(self):
        """
        用途:通过 grid 布局实现计算器的界面
        """
        ......
        ......
       

if __name__ == "__main__":
    window = Tk()
    # 创建主窗口
    window.geometry("200x200+200+200")
    window.title('计算机界面')
    # 对窗口进行大小、位置及名字设置

    app = Appication(master = window)
    # 调用新创建的类、并进行初始化、将 master = window (主窗口)传递进去

    window.mainloop()
    # 调用 mainloop 方法、启用窗口并进入事件循环

2、布局管理器代码(grid)

# class Appication(Frame):
#     """
#     一个经典的 GUI 类的写法
#     """
    def CreateWidget(self):
        """
        用途:通过 grid 布局实现计算器的界面
        """
        buttonsText = (('MC', 'M+', 'M-', 'MR'),
                       ('C', '±', '/', 'x'),
                       ('7', '8', '9', '-'),
                       ('4', '5', '6', '+'),
                       ('1', '2', '3', '='),
                       ('0', '.'))

        Entry(self).grid(row = 0, column = 0, columnspan = 4)

        for rindex, r in enumerate(buttonsText):
            # 第 rindex 项 值为 r (元组)
            for cindex, c in enumerate(r):
                # 第 cindex 项 值为 c (计算机按钮上确切的值)
                if c == '=':
                    Button(self, text = c, width = 2)\
                    .grid(row = rindex + 1, column = cindex, rowspan = 2, sticky = NSEW)
                elif c == 0:
                    Button(self, text = c, width = 2) \
                    .grid(row = rindex + 1, column = cindex, columnspan = 2, sticky = NSEW)
                elif c == '.':
                    Button(self, text = c, width = 2) \
                    .grid(row = rindex + 1, column = cindex + 1, sticky = NSEW)
                else:
                    Button(self, text = c, width = 2) \
                    .grid(row = rindex + 1, column = cindex, sticky = NSEW)

3、源代码

from tkinter import *
from tkinter import messagebox
import random
# 导入库文件


class Appication(Frame):
    """
    一个经典的 GUI 类的写法
    """
    def __init__(self, master = None):
        # 定义构造函数、并初始化父类为空
        super().__init__(master)
        # 通过 super() 调用父类、并将 master 传进去
        self.master = master
        # 令此类中的 master 等于传入的 window
        self.pack()
        # 布局此窗口

        self.CreateWidget()
        # 调用另一个函数 CreateWidget

    def CreateWidget(self):
        """
        用途:通过 grid 布局实现计算器的界面
        """
        buttonsText = (('MC', 'M+', 'M-', 'MR'),
                       ('C', '±', '/', 'x'),
                       ('7', '8', '9', '-'),
                       ('4', '5', '6', '+'),
                       ('1', '2', '3', '='),
                       ('0', '.'))

        Entry(self).grid(row = 0, column = 0, columnspan = 4)

        for rindex, r in enumerate(buttonsText):
            # 第 rindex 项 值为 r (元组)
            for cindex, c in enumerate(r):
                # 第 cindex 项 值为 c (计算机按钮上确切的值)
                if c == '=':
                    Button(self, text = c, width = 2)\
                    .grid(row = rindex + 1, column = cindex, rowspan = 2, sticky = NSEW)
                elif c == 0:
                    Button(self, text = c, width = 2) \
                    .grid(row = rindex + 1, column = cindex, columnspan = 2, sticky = NSEW)
                elif c == '.':
                    Button(self, text = c, width = 2) \
                    .grid(row = rindex + 1, column = cindex + 1, sticky = NSEW)
                else:
                    Button(self, text = c, width = 2) \
                    .grid(row = rindex + 1, column = cindex, sticky = NSEW)


if __name__ == "__main__":
    window = Tk()
    # 创建主窗口
    window.geometry("200x200+100+100")
    window.title('计算机界面')
    # 对窗口进行大小、位置及名字设置

    app = Appication(master = window)
    # 调用新创建的类、并进行初始化、将 master = window (主窗口)传递进去

    window.mainloop()
    # 调用 mainloop 方法、启用窗口并进入事件循环

你可能感兴趣的:(Python,GUI,tkinter,库,gui,tkinter,window)