python3使用tkinter实现ui界面简单实例

1207次阅读  |  发布于5年以前

复制代码 代码如下:

import time
import tkinter as tk

class Window:
def init(self, title='nms', width=300, height=120, staFunc=bool, stoFunc=bool):
self.w = width
self.h = height
self.stat = True
self.staFunc = staFunc
self.stoFunc = stoFunc
self.staIco = None
self.stoIco = None

    self.root = tk.Tk(className=title)  

def center(self):  
    ws = self.root.winfo_screenwidth()  
    hs = self.root.winfo_screenheight()  
    x = int( (ws/2) - (self.w/2) )  
    y = int( (hs/2) - (self.h/2) )  
    self.root.geometry('{}x{}+{}+{}'.format(self.w, self.h, x, y))  

def packBtn(self):  
    self.btnSer = tk.Button(self.root, command=self.event, width=15, height=3)  
    self.btnSer.pack(padx=20, side='left')  
    btnQuit = tk.Button(self.root, text='关闭窗口', command=self.root.quit, width=15, height=3)  
    btnQuit.pack(padx=20, side='right')  

def event(self):  
    self.btnSer['state'] = 'disabled'  
    if self.stat:  
        if self.stoFunc():  
            self.btnSer['text'] = '启动服务'  
            self.stat = False  
            self.root.iconbitmap(self.stoIco)  
    else:  
        if self.staFunc():  
            self.btnSer['text'] = '停止服务'  
            self.stat = True  
            self.root.iconbitmap(self.staIco)  
    self.btnSer['state'] = 'active'  

def loop(self):  
    self.root.resizable(False, False)   #禁止修改窗口大小  
    self.packBtn()  
    self.center()                       #窗口居中  
    self.event()  
    self.root.mainloop()  

########################################################################
def sta():
print('start.')
return True
def sto():
print('stop.')
return True

if name == 'main':
import sys, os

w = Window(staFunc=sta, stoFunc=sto)  
w.staIco = os.path.join(sys.exec_prefix, 'DLLs\pyc.ico')  
w.stoIco = os.path.join(sys.exec_prefix, 'DLLs\py.ico')  
w.loop()  

Copyright© 2013-2020

All Rights Reserved 京ICP备2023019179号-8