说明

有一个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程序相关推荐

  1. python中tkinter模块_使用Python中的tkinter模块作图的方法

    python简述: Python是一种解释型.面向对象.动态数据类型的高级程序设计语言.自从20世纪90年代初Python语言诞生至今,它逐渐被广泛应用于处理系统管理任务和Web编程.Python[1 ...

  2. 使用python中的tkinter模块制作一个学习打卡小软件

    学习任务打卡小软件---戈多Sensei 1.制定任务 2.完成任务 3.学习评估 最近为了给我的星星⭐写一个学习记录软件,学习了一下python中的tkinter模块,做了一个可视化打卡界面,此处为 ...

  3. python timer 死掉_Python timer定时器两种常用方法解析 Python中如何在一段时间后停止程序...

    如何调用定时器 python 如何在python里面for循环中放了一个定时函数,当定# 我的构想程序效果 for Img in ImgArray: timer = threading.Timer(1 ...

  4. triz桌面计算机,分享|ndm:NPM 的桌面 GUI 程序

    NPM 是 Node Package Manager (node 包管理器)的缩写,它是用于安装 NodeJS 软件包或模块的命令行软件包管理器.我们发布过一个指南描述了如何使用 NPM 管理 Nod ...

  5. python中的tkinter模块

    tkinter介绍 tkinter是python自带的GUI库,是对图形库TK的封装 tkinter是一个跨平台的GUI库,开发的程序可以在win,linux或者mac下运行 除此之外还存在很多图形库 ...

  6. python定时刷新tkinter界面_如何在python中“刷新”Tkinter窗口?

    我试图通过一个按钮在Python中重新加载一个Tkinter窗口,但是我很难理解它.你看,它使用import random并从列表中随机生成单词,当你点击按钮时,我想把标签设置成不同的单词,就像掷骰子 ...

  7. python中 1.34e3_Python快速编程入门——第2章 Python基础语法

    第2章 python基础语法 一.基本语法 二.变量和数据类型 三.标识符和关键字 四.简单数值类型 一.基本语法 注释:Python的注释是用# 不像C/C++使用的是//或者/*/.多行注释好像挺 ...

  8. python eel 多线程_Python的一个轻量级桌面GUI开发第三方库:Eel

    1 环境: ====== 1.1 Python3.8,谷歌浏览器,微软vscode编辑器. 1.2 Eel库的介绍,安装,相关地址,对官方的文档进行解读,文件结构,简单使用和注意事项. 1.3 亲测, ...

  9. python中pass语句的出现是为了保持程序结构的完整性_pass语句的出现是为了保持程序结构的完整性。( )_学小易找答案...

    [单选题]如果希望循环是无限的,我们可以通过设置条件表达式永远为( )来实现无限循环. [计算题]1.定理1.定理2的证明 2.课后习题2.3.2.4 [单选题]( )语句是else语句和if语句的组 ...

最新文章

  1. android .9 格式图片 背景设置 高度问题 空白问题
  2. influxdb mysql对比_InfluxDB读写性能测试
  3. 优秀Java开发者都在看的书籍
  4. python t t_Python ttable包_程序模块 - PyPI - Python中文网
  5. 前端:JS/29/实例:控制div显示_滚动的图片
  6. sizeof 在C语言的作用,union 与sizeof的作用??
  7. 学会这 6 招,网页搜索一秒就能搜到你想要的【老司机必备神技】
  8. rails rake和示例
  9. 基于html5的消除类游戏,基于HTML5的消除类游戏1.doc
  10. Java项目的命名规范
  11. Java高并发编程详解系列-Volatile关键字
  12. vyos配置ds-nat
  13. 利用opencv 做一个疲劳检测系统(2)
  14. 微信调整字体大小 html,H5禁止微信内置浏览器调整字体大小
  15. 《Celeste》 开发者是如何精心制作“冲刺”的
  16. kettle Call From LAPTOP-14BPR3NI/192.168.1.2 to locahost:8020 failed on connection
  17. 跨境物流主要流程是什么样?
  18. U盘文件、文件夹不显示却能搜索到 显示U盘文件的解决办法
  19. java 飞机 源码_Java 飞机游戏源码(带音乐)
  20. centos7中kubeadm方式搭建k8s集群(crio+calico)(k8s v1.21.0)

热门文章

  1. 禅道的部署测试如何使用禅道
  2. DS18B20温度测量程序文件(简单通用)
  3. 「2022」字节-前端(互娱)笔试题
  4. java技术--SpringCloud:消息总线Bus简介及代码实现(18)
  5. CUBEIDE STM32 HardFault分析
  6. 搭建Freekan私人影视电影网站,cpolar内网穿透发布上线
  7. 【Lintcode】1335. Repeated DNA Sequences
  8. Zookeeper客户端工具-ZooInspector使用
  9. 反相放大器和同相放大器的过程和区别及选择方式概述
  10. php校园学校教室排课系统 php毕业设计题目课题选题 php毕业设计项目作品源码(3)任何老师和班主任功能