基於Tkinter的仿計算器界面設計(Grid佈局)

一個GUI應用程序有很多的組件,將這些組件有序美觀地排布在窗口上,需要用Tkinter提供的佈局管理器,tkinter提供了三種管理其:pack,grid和place.
下面這個代碼是用grid來進行的佈局管理。
在看代碼之前介紹幾個重要的選項:
row :單元格的行號
column:單元格的列號。
columnspan:跨越的列數。
rowspan:跨越的行數。
ipadx,ipady設置組件之間x方向和y方向的間隔。單位爲像素。
sticky:默認是center,組件緊貼着該單元格里的某一角或者對應於東南西北中某些角,如WE,代表緊貼單元格的東西兩個方向,這樣組件就會橫向佔滿整個單元格,方向用大寫字母ESWN這四個字母表示。
下面代碼實現的功能就是仿計算器界面設計。
效果如圖:
在這裏插入圖片描述
代碼如下:

# GUI經典寫法:面向對象的寫法
# Frame框架是一個容器,放其他組件的容器
# 下面是一個測試經典的GUI程序的寫法,使用面向對象的方式
# Radiobutton是單選按鈕組件
#   屬性有:value = ' '設置該單選按鈕對應的值
#          variable = self.v可以設置其對應的變量,可以設置對應變量的值來初始化單選按鈕的選中狀態
#          多個組件對應一個變量,則可以認定這幾個組件是一組。
from tkinter import *
from tkinter import messagebox
import os
import webbrowser
import random


class Application(Frame):
	"""一個經典的GUI程序計算器設計"""

	def __init__(self,master=None):#構造器,構造一個組件對象
		super().__init__(master)   #super代表的是父類的定義,而不是父類對象。
		self.master = master
		self.pack()
		self.createWidget()

	def createWidget(self):
		btnText = (('MC','M+','M-','MR'),
					('C','±','➗','✖'),
					(7,8,9,'-'),
					(4,5,6,'+'),
					(1,2,3,'='),
					(0,'.'))
		self.ent = Entry(self)
		self.ent.grid(row = 0,column = 0,columnspan = 4,pady = 10)  #columnspan跨列
		for rindex,r in enumerate(btnText):
			for cindex,c in enumerate(r):
				if c == '=':
					Button(self,text = c,width=2).grid(row = rindex+1,column = cindex,sticky = NSEW,rowspan = 2) 
				elif c == 0:
					Button(self,text = c,width=2).grid(row = rindex+1,column = cindex,sticky = NSEW,columnspan = 2)
				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__':
	root = Tk()
	root.geometry("200x240+200+300")
	root.title("計算器界面設計")
	app = Application(master=root)
	root.mainloop()

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章