Python中使用Tkinter 快速布局编写桌面GUI程序
说明
有一个WEB系统,因为启动之前,需要检测网络环境,然后启动一系列服务,这样才能最终陈宫启动,所以通过Python的GUI快速开发包tkinter来开发一个桌面主程序。
程序源码,Pycharm2019, python3.9
# Kevin 个人学习Python来实现GUI
# 开发日期:2022-9-25
# 版本 V1.0
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import tkinter as tk
from tkinter.filedialog import askopenfilename, asksaveasfilename
import socket
import tkinter as tk # 使用Tkinter前需要先导入
from tkinter import * # 文本和链接需要的模块
import webbrowser as wb # 文本和链接需要的模块
def insert_point(): # 在鼠标焦点处插入输入内容
var = e.get()
t.insert('insert', var)
def insert_end(): # 在文本框内容最后接着插入输入内容
var = e.get()
t.insert('end', var)
# 主程序
# 第1步,实例化object,建立窗口window
window = tk.Tk()
# 第2步,给窗口的可视化起名字
window.geometry("680x500+400+150")
window.title('汇麟数字化阅文系统主程序')
# 创建一个图片管理类
photo = tk.PhotoImage(file="HUILINLOGO.png") # file:t图片路径
imgLabel = tk.Label(window, image=photo) # 把图片整合到标签类中
imgLabel.grid(row=0,rowspan=2,column=0,columnspan=2)
# 创建一个标签类, [justify]:对齐方式
textLabel1 = tk.Label(window, text="这是汇麟数字化阅文系统的主程序,用于网络检测,启动服务,"
"打开网站链接。\n依次启动MYSQL,NGNIX,WEB服务。",font=('Arial', 10))
# justify=tk.LEFT) # 左对齐
textLabel1.grid(row=0,rowspan=2,column=2,columnspan=2,padx=60,pady=20)
# 按钮1.2.3并排,和左边对应的集中显示文本
var1 = tk.StringVar() # 将label标签的内容设置为字符类型,用var来接收hit_me函数的传出内容用以显示在标签上
# var = "这是汇麟数字化阅文系统的主程序,用于网络检测,启动服务,打开网站链接。\n我在换个行"
l1 = tk.Label(window, textvariable=var1, bg='green', fg='white', font=('Arial', 10),width=30, height=1)
# 说明: bg为背景,fg为字体颜色,font为字体,width为长,height为高,这里的长和高是字符的长和高,比如height=2,就是标签有2个字符这么高
l1.grid(row=4,column=2,ipadx=130,ipady=10,padx=10,pady=0)
on_hit_ip = False
def check_ip():
global on_hit_ip
huilin_serverip = '192.168.5.254'
res = socket.gethostbyname(socket.gethostname())
# print('本机IP地址为:%s' % res)
if res == huilin_serverip:
var1.set("路由器连接成功,服务器IP地址设置正常!ip=192.168.5.254")
# print('服务器IP地址设置正常!ip=192.168.5.254')
else:
var1.set("服务器IP地址为%s设置不正常!请连接路由器并修改本机ip为192.168.5.254"%res)
# print('服务器IP地址设置不正常!设置ip=192.168.5.254')
btn_check = tk.Button(window, text="网 络 检 测", command=check_ip)
btn_check.grid(row=4,ipadx=20,ipady=10)
# rowspan=2,column=0,columnspan=2)
# ipadx=25,ipady=10)
# padx=0,pady=20)
# btn_check.pack() # 用了PACK,就不能用grid,或者PLACE
# 添加按钮2 和对应的文本
var2 = tk.StringVar() # 将label标签的内容设置为字符类型,用var来接收hit_me函数的传出内容用以显示在标签上
# var = "这是汇麟数字化阅文系统的主程序,用于网络检测,启动服务,打开网站链接。\n我在换个行"
l2 = tk.Label(window, textvariable=var2, bg='green', fg='white', font=('Arial', 10),width=30, height=1)
# 说明: bg为背景,fg为字体颜色,font为字体,width为长,height为高,这里的长和高是字符的长和高,比如height=2,就是标签有2个字符这么高
l2.grid(row=6,column=2,ipadx=130,ipady=10,padx=10,pady=0)
on_hit_sql = False
def hit_sql():
global on_hit_sql
if on_hit_sql == False:
on_hit_sql = True
var2.set('Mysql is starting......')
else:
on_hit_sql = False
var2.set('')
btn_startsql = tk.Button(window,command=hit_sql)
btn_startsql["text"] = "启 动 SQL"
btn_startsql.grid(row=6,ipadx=20,ipady=10)
# rowspan=2,column=0,columnspan=2)
# ipadx=25,ipady=10)
# ,padx=0,pady=40)
# 添加按钮3 ngnix 和对应文本
var3 = tk.StringVar() # 将label标签的内容设置为字符类型,用var来接收hit_me函数的传出内容用以显示在标签上
# var = "这是汇麟数字化阅文系统的主程序,用于网络检测,启动服务,打开网站链接。\n我在换个行"
l3 = tk.Label(window, textvariable=var3, bg='green', fg='white', font=('Arial', 10),width=30, height=1)
# 说明: bg为背景,fg为字体颜色,font为字体,width为长,height为高,这里的长和高是字符的长和高,比如height=2,就是标签有2个字符这么高
l3.grid(row=8,column=2,ipadx=130,ipady=10,padx=10,pady=0)
on_hit_ngnix = False
def hit_ngnix():
global on_hit_ngnix
if on_hit_ngnix == False:
on_hit_ngnix = True
var3.set('Ngnix is starting......')
else:
on_hit_ngnix = False
var3.set('')
btn_startngix = tk.Button(window,command=hit_ngnix)
btn_startngix["text"] = "启 动NGIX"
btn_startngix.grid(row=8,ipadx=20,ipady=10)
# 添加按钮4 web
var4 = tk.StringVar() # 将label标签的内容设置为字符类型,用var来接收hit_me函数的传出内容用以显示在标签上
# var = "这是汇麟数字化阅文系统的主程序,用于网络检测,启动服务,打开网站链接。\n我在换个行"
l4 = tk.Label(window, textvariable=var4, bg='green', fg='white', font=('Arial', 10),width=30, height=1)
# 说明: bg为背景,fg为字体颜色,font为字体,width为长,height为高,这里的长和高是字符的长和高,比如height=2,就是标签有2个字符这么高
l4.grid(row=10,column=2,ipadx=130,ipady=10,padx=10,pady=0)
on_hit_web = False
def hit_web():
global on_hit_web
if on_hit_web == False:
on_hit_web = True
var4.set('Web is starting......')
else:
on_hit_web = False
var4.set('')
btn_startweb = tk.Button(window,command=hit_web)
btn_startweb["text"] = "启 动WEB"
btn_startweb.grid(row=10,ipadx=20,ipady=10)
# ,padx=0,pady=40)
# 登录链接标签
var5 = tk.StringVar() # 将label标签的内容设置为字符类型,用var来接收hit_me函数的传出内容用以显示在标签上
# var = "这是汇麟数字化阅文系统的主程序,用于网络检测,启动服务,打开网站链接。\n我在换个行"
l5 = tk.Label(window, textvariable=var5, bg='green', fg='white', font=('Arial', 10),width=30, height=1)
# 说明: bg为背景,fg为字体颜色,font为字体,width为长,height为高,这里的长和高是字符的长和高,比如height=2,就是标签有2个字符这么高
l5.grid(row=12,column=2,ipadx=130,ipady=10,padx=10,pady=0)
on_hit_login = False
def hit_login():
global on_hit_login
if on_hit_login == False:
on_hit_login = True
var5.set("登录http://localhost:8001/login")
else:
on_hit_login = False
var5.set('')
btn_login = tk.Button(window,command=hit_login)
btn_login["text"] = "启动WEB服务"
btn_login.grid(row=12,ipadx=20,ipady=10)
# 添加按钮5
btn_exit = tk.Button(window,command=window.destroy)
btn_exit["text"] = "退 出"
btn_exit.grid(row=18,ipadx=20,ipady=10)
#########################################
# 文本链接
text = Text(window, font=('Arial', 10),width=70, height=5)
text.grid(row=18,column=2)
text.insert(INSERT, '登录汇麟数字化会议系统 http://localhost:8001/login')
text.tag_add('link', '1.14', '1.46')
text.tag_config('link', foreground='blue', underline=True)
def show_arrow_cursor(event):
text.config(cursor='arrow')
def show_xterm_cursor(event):
text.config(cursor='xterm')
def click(event):
wb.open('http://localhost:8001/login')
# 绑定事件
text.tag_bind('link', '<Enter>', show_arrow_cursor) # <Enter>鼠标进入
text.tag_bind('link', '<Leave>', show_xterm_cursor) # <Enter>鼠标离开
text.tag_bind('link', '<Button-1>', click) # <Enter>鼠标点击
############################################
# 版权说明
textLabel2 = tk.Label(window, text="Copyright@2022 xxx科技有限公司",font=('Arial', 10))
# justify=tk.LEFT) # 左对齐
textLabel2.grid(row=20,rowspan=2,column=2,columnspan=2,padx=60,pady=20)
window.mainloop()
Python中使用Tkinter 快速布局编写桌面GUI程序相关推荐
- python中tkinter模块_使用Python中的tkinter模块作图的方法
python简述: Python是一种解释型.面向对象.动态数据类型的高级程序设计语言.自从20世纪90年代初Python语言诞生至今,它逐渐被广泛应用于处理系统管理任务和Web编程.Python[1 ...
- 使用python中的tkinter模块制作一个学习打卡小软件
学习任务打卡小软件---戈多Sensei 1.制定任务 2.完成任务 3.学习评估 最近为了给我的星星⭐写一个学习记录软件,学习了一下python中的tkinter模块,做了一个可视化打卡界面,此处为 ...
- python timer 死掉_Python timer定时器两种常用方法解析 Python中如何在一段时间后停止程序...
如何调用定时器 python 如何在python里面for循环中放了一个定时函数,当定# 我的构想程序效果 for Img in ImgArray: timer = threading.Timer(1 ...
- triz桌面计算机,分享|ndm:NPM 的桌面 GUI 程序
NPM 是 Node Package Manager (node 包管理器)的缩写,它是用于安装 NodeJS 软件包或模块的命令行软件包管理器.我们发布过一个指南描述了如何使用 NPM 管理 Nod ...
- python中的tkinter模块
tkinter介绍 tkinter是python自带的GUI库,是对图形库TK的封装 tkinter是一个跨平台的GUI库,开发的程序可以在win,linux或者mac下运行 除此之外还存在很多图形库 ...
- python定时刷新tkinter界面_如何在python中“刷新”Tkinter窗口?
我试图通过一个按钮在Python中重新加载一个Tkinter窗口,但是我很难理解它.你看,它使用import random并从列表中随机生成单词,当你点击按钮时,我想把标签设置成不同的单词,就像掷骰子 ...
- python中 1.34e3_Python快速编程入门——第2章 Python基础语法
第2章 python基础语法 一.基本语法 二.变量和数据类型 三.标识符和关键字 四.简单数值类型 一.基本语法 注释:Python的注释是用# 不像C/C++使用的是//或者/*/.多行注释好像挺 ...
- python eel 多线程_Python的一个轻量级桌面GUI开发第三方库:Eel
1 环境: ====== 1.1 Python3.8,谷歌浏览器,微软vscode编辑器. 1.2 Eel库的介绍,安装,相关地址,对官方的文档进行解读,文件结构,简单使用和注意事项. 1.3 亲测, ...
- python中pass语句的出现是为了保持程序结构的完整性_pass语句的出现是为了保持程序结构的完整性。( )_学小易找答案...
[单选题]如果希望循环是无限的,我们可以通过设置条件表达式永远为( )来实现无限循环. [计算题]1.定理1.定理2的证明 2.课后习题2.3.2.4 [单选题]( )语句是else语句和if语句的组 ...
最新文章
- android .9 格式图片 背景设置 高度问题 空白问题
- influxdb mysql对比_InfluxDB读写性能测试
- 优秀Java开发者都在看的书籍
- python t t_Python ttable包_程序模块 - PyPI - Python中文网
- 前端:JS/29/实例:控制div显示_滚动的图片
- sizeof 在C语言的作用,union 与sizeof的作用??
- 学会这 6 招,网页搜索一秒就能搜到你想要的【老司机必备神技】
- rails rake和示例
- 基于html5的消除类游戏,基于HTML5的消除类游戏1.doc
- Java项目的命名规范
- Java高并发编程详解系列-Volatile关键字
- vyos配置ds-nat
- 利用opencv 做一个疲劳检测系统(2)
- 微信调整字体大小 html,H5禁止微信内置浏览器调整字体大小
- 《Celeste》 开发者是如何精心制作“冲刺”的
- kettle Call From LAPTOP-14BPR3NI/192.168.1.2 to locahost:8020 failed on connection
- 跨境物流主要流程是什么样?
- U盘文件、文件夹不显示却能搜索到 显示U盘文件的解决办法
- java 飞机 源码_Java 飞机游戏源码(带音乐)
- centos7中kubeadm方式搭建k8s集群(crio+calico)(k8s v1.21.0)
热门文章
- 禅道的部署测试如何使用禅道
- DS18B20温度测量程序文件(简单通用)
- 「2022」字节-前端(互娱)笔试题
- java技术--SpringCloud:消息总线Bus简介及代码实现(18)
- CUBEIDE STM32 HardFault分析
- 搭建Freekan私人影视电影网站,cpolar内网穿透发布上线
- 【Lintcode】1335. Repeated DNA Sequences
- Zookeeper客户端工具-ZooInspector使用
- 反相放大器和同相放大器的过程和区别及选择方式概述
- php校园学校教室排课系统 php毕业设计题目课题选题 php毕业设计项目作品源码(3)任何老师和班主任功能