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


Posted in Python onJanuary 10, 2014

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

import time
import tkinter as tkclass 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()
Python 相关文章推荐
Python聊天室实例程序分享
Jan 05 Python
Django Highcharts制作图表
Aug 27 Python
Python实现查看系统启动项功能示例
May 10 Python
基于python进行桶排序与基数排序的总结
May 29 Python
使用python进行文本预处理和提取特征的实例
Jun 05 Python
详解python3中zipfile模块用法
Jun 18 Python
在Python中字典根据多项规则排序的方法
Jan 21 Python
python 环境搭建 及python-3.4.4的下载和安装过程
Jul 20 Python
简单分析python的类变量、实例变量
Aug 23 Python
django 实现celery动态设置周期任务执行时间
Nov 19 Python
Pytorch 实现focal_loss 多类别和二分类示例
Jan 14 Python
详解用Pytest+Allure生成漂亮的HTML图形化测试报告
Mar 31 Python
python构造icmp echo请求和实现网络探测器功能代码分享
Jan 10 #Python
python中mechanize库的简单使用示例
Jan 10 #Python
python使用新浪微博api上传图片到微博示例
Jan 10 #Python
python发腾讯微博代码分享
Jan 10 #Python
python实现2014火车票查询代码分享
Jan 10 #Python
python抓取豆瓣图片并自动保存示例学习
Jan 10 #Python
python文件比较示例分享
Jan 10 #Python
You might like
PHP环境搭建最新方法
2006/09/05 PHP
Trying to clone an uncloneable object of class Imagic的解决方法
2012/01/11 PHP
PHP 冒泡排序 二分查找 顺序查找 二维数组排序算法函数的详解
2013/06/25 PHP
PHP文件锁定写入实例解析
2014/07/14 PHP
php跨站攻击实例分析
2014/10/28 PHP
PHP简单判断字符串是否包含另一个字符串的方法
2016/03/25 PHP
PHP数组操作简单案例分析
2016/10/15 PHP
JavaScript执行效率与性能提升方案
2012/12/21 Javascript
jquery全选/全不选/反选另一种实现方法(配合原生js)
2013/04/07 Javascript
js函数中onmousedown和onclick的区别和联系探讨
2013/05/19 Javascript
实测jquery data()如何存值
2013/08/18 Javascript
JavaScript制作简易计算器(不用eval)
2017/02/05 Javascript
JS实现页面内跳转的简单代码
2017/09/03 Javascript
vue中实现在外部调用methods的方法(推荐)
2018/02/08 Javascript
JavaScript实现的DOM绘制柱状图效果示例
2018/08/08 Javascript
React 项目迁移 Webpack Babel7的实现
2018/09/12 Javascript
python实现按行切分文本文件的方法
2016/04/18 Python
Python 描述符(Descriptor)入门
2016/11/20 Python
python日志记录模块实例及改进
2017/02/12 Python
Python输入二维数组方法
2018/04/13 Python
python抓取网站的图片并下载到本地的方法
2018/05/22 Python
对Python实现累加函数的方法详解
2019/01/23 Python
我喜欢你 抖音表白程序python版
2019/04/07 Python
HTML5 本地存储和内容按需加载的思路和方法
2011/04/07 HTML / CSS
英国和世界各地预订便宜的酒店:LateRooms.com
2019/05/05 全球购物
德国二手设计师时装和复古时装跳蚤市场:Mädchenflohmarkt
2020/11/09 全球购物
法学专业毕业生自荐信范文
2013/12/18 职场文书
保密普查工作实施方案
2014/02/25 职场文书
2014年绩效考核工作总结
2014/12/11 职场文书
2015年公司国庆放假通知
2015/07/30 职场文书
pandas中DataFrame检测重复值的实现
2021/05/26 Python
nginx负载功能+nfs服务器功能解析
2022/02/28 Servers
Nebula Graph解决风控业务实践
2022/03/31 MySQL
vue自定义右键菜单之全局实现
2022/04/09 Vue.js
我国拿下天问一号火星着陆区附近 22 个地理实体命名:平乐、西柏坡、古田、漠河等
2022/04/29 数码科技
关于mysql中string和number的转换问题
2022/06/14 MySQL