python-图形化界面编程(一个启动停止服务的界面)

GUI编程

1. Python实现GUI的方法

1)使用python的标准库 Tkinter

2)使用wxPython

3)使用Jython(可以和 Java无缝集成)

2. 使用Tkinter

安装tkinter库

yum install  -y  tkinter tk-devel

创建1个空白的主窗口

#!/usr/bin/python
# -*- coding: UTF-8 -*-
 
import Tkinter
 
# 创建一个主窗口
myWindow = Tkinter.Tk()
 
# 进入消息循环
myWindow.mainloop()

写一个服务启动的图形界面:

[[email protected] python]# cat win2.py
#!/usr/bin/python
#_*_coding:utf-8_*_
import os
from Tkinter import *                        # 导入 Tkinter 库
 
def restart_server():
         ip= listbox1.get(listbox1.curselection())
         server= listbox2.get(listbox2.curselection())
         os.system("sshpass-p ‘redhat‘ ssh [email protected]%s service %s restart" %(ip,server))
         print"sshpass -p ‘redhat‘ ssh [email protected]%s service %s restart" %(ip,server)
         label_info["text"]="服务器(%s)正在重启%s服务..."%(ip,server)
         mywin.update()
 
def start_server():
         ip= listbox1.get(listbox1.curselection())
         server= listbox2.get(listbox2.curselection())
         os.system("sshpass-p ‘redhat‘ ssh [email protected]%s service %s start" %(ip,server))
         print"sshpass -p ‘redhat‘ ssh [email protected]%s service %s start" %(ip,server)
         label_info["text"]="武器器(%s)正在启动%s服务..."%(ip,server)
         mywin.update()
 
def stop_server():
       ip = listbox1.get(listbox1.curselection())
       server = listbox2.get(listbox2.curselection())
       os.system("sshpass -p ‘redhat‘ ssh [email protected]%s service %s stop"%(ip,server))
       print "sshpass -p ‘redhat‘ ssh [email protected]%s service %s stop"%(ip,server)
       label_info["text"]="武器器(%s)正在停止%s服务..."%(ip,server)
       mywin.update()
 
mywin = Tk()                    # 创建窗口对象的背景色
 
mywin.title("server manager")
mywin.geometry("700x400")
 
#创建标签
label1 = Label(mywin,text="服务器列表",font=("Arial",20),bg=‘yellow‘,fg=‘red‘)
label1.grid(row=0,column=0)
label2 = Label(mywin,text="服务名称",font=("Arial",20),bg=‘blue‘,fg=‘red‘)
label2.grid(row=0,column=1)
label3 = Label(mywin,text="操作",font=("Arial",20),bg="blue",fg="red")
label3.grid(row=0,column=2,columnspan=4)
label_info =Label(mywin,text="",font=("Arial",20),bg=‘purple‘,fg=‘red‘)
label_info.grid(row=2,column=0)
 
#创建列表组件
listbox1 =Listbox(mywin,exportselection=False)
listbox2 =Listbox(mywin,exportselection=False)
#exportselection=False,是的选择其他的Listbox时,原来的选择依然有效
 
#创建按钮
button1 = Button(mywin,text="重启服务",command=restart_server)
button2 = Button(mywin,text="启动服务",command=start_server)
button3 = Button(mywin,text="停止服务",command=stop_server)
 
#给列表组件添加数据
ips = []
for ip in range(128,150):                            # 第一个小部件插入数据
         tmp= "192.168.5.%d" %ip
         ips.append(tmp)
for ip in ips:
         listbox1.insert(0,ip)
services =["nginx","mariadb","ftp","network","httpd","mysql"]
for service in services:
         listbox2.insert(0,service)             # 第二个小部件插入数据
 
#给listbox布局
listbox1.grid(row=1,column=0,padx=20,pady=20,ipady=10)
listbox2.grid(row=1,column=1,padx=20,pady=20)
button1.grid(row=1,column=2,padx=10,pady=10)
button2.grid(row=1,column=3,padx=10,pady=10)
button3.grid(row=1,column=4,padx=10,pady=10)
 
mywin.mainloop()                 # 进入消息循环

执行win2.py的效果图:

[[email protected] python]# python win2.py

测试直接点击启动、停止、重启服务:

##centos-1主机地址为192.168.5.129,且httpd服务没启动:

[[email protected] ~]# service httpd status

httpd 已停

在图形界面点击192.168.5.129àhttpdà启动服务

在centos-1机器上查看httpd的状态:

[[email protected] ~]# service httpd status

httpd (pid 5206) 正在运行...

在点击停止服务:

查看centos-1主机httpd状态:

[[email protected] ~]# service httpd status

httpd 已停

点击重启:

查看centos-1主机httpd状态:

[[email protected] ~]# service httpd status

httpd (pid 5635) 正在运行...

时间: 2024-08-29 02:26:23

python-图形化界面编程(一个启动停止服务的界面)的相关文章

PySide——Python图形化界面入门教程(六)

PySide——Python图形化界面入门教程(六) ——QListView和QStandardItemModel 翻译自:http://pythoncentral.io/pyside-pyqt-tutorial-qlistview-and-qstandarditemmodel/ 上一个教程中,我们讨论了Qt的QListWidget类,它用来实现简单的单列列表框(list boxes).然而,我们还需要更加灵活的widget来实现列表,Qt为此提供了QListView 来实现多种多样的项.它是一

PySide——Python图形化界面

PySide——Python图形化界面 PySide——Python图形化界面入门教程(四) PySide——Python图形化界面入门教程(四) ——创建自己的信号槽 ——Creating Your Own Signals and Slots 原文链接:http://pythoncentral.io/pysidepyqt-tutorial-creating-your-own-signals-and-slots/ 你不必局限于Qt widget提供的信号,你可以使用Signal类来创建自己的信号

PySide——Python图形化界面入门教程(一)

PySide——Python图形化界面入门教程(一) ——基本部件和HelloWorld 原文链接:http://pythoncentral.io/intro-to-pysidepyqt-basic-widgets-and-hello-world/ 本教程第一部分将给出PySide的最基本知识点,包含使用的对象,和一些能帮助你了解Python/Qt应用是如何构建的小例子. 首先来看一下基本的Qt对象.Qt包含了许多类去处理XML.多媒体.数据库和网络等等事物,但我们现在重点关注可视化的元素——窗

PySide——Python图形化界面入门教程(二)

PySide——Python图形化界面入门教程(二) ——交互Widget和布局容器 ——Interactive Widgets and Layout Containers 原文链接:http://pythoncentral.io/pyside-pyqt-tutorial-interactive-widgets-and-layout-containers/ 上一个教程中,我们了解了一些QWidget提供的功能,还有一个特殊的子类QLabel.更进一步的,我们完成了一个用来说明简单Python/Q

PySide——Python图形化界面入门教程(三)

PySide——Python图形化界面入门教程(三) ——使用内建新号和槽 ——Using Built-In Signals and Slots 上一个教程中,我们学习了如何创建和建立交互widgets,以及将他们布局的两种不同的方法.今天我们继续讨论Python/Qt应用响应用户触发的事件:信号和槽. 当用户执行一个动作——点击按钮,选择组合框的值,在文本框中打字——这个widget就会发出一个信号.这个信号自己什么都不做,它必须和槽连接起来才行.槽是一个接受信号的执行动作的对象. 连接内建P

在windows下使用批处理启动停止服务

现在系统上运行的软件和服务是越来越多,但是内存是有限的,这就导致了计算机的速度越来越慢.作为开发者,都清楚的知道很多服务的运行是需要占用大量资源的,而且大部分服务都是默认开机启动,空闲的时候运行很浪费,每次都要去控制面板下停止服务,很繁琐,因为我就想到在windows下用批处理解决服务的启动和停止. 首先,要知道在DOS模式下哪个命令是可以用来启动和停止服务的.我用的是net.exe,简单的介绍一下net在服务启动和停止方面的使用. net start service 启动服务 net stop

python 图形化(Tkinter)

python提供了多个图形开发界面的库,几个常用Python GUI库如下: Tkinter: Tkinter模块("Tk 接口")是Python的标准Tk GUI工具包的接口.Tk和Tkinter可以在大多数的Unix平台下使用,同样可以应用在Windows和Macintosh系统里.,Tk8.0的后续版本可以实现本地窗口风格,并良好地运行在绝大多数平台中. wxPython:wxPython 是一款开源软件,是 Python 语言的一套优秀的 GUI 图形库,允许 Python 程

java基础学习——Swing图形化用户界面编程

原文链接:https://blog.csdn.net/yiziweiyang/article/details/52317240 链接有详细解释,也有例子,以下是个人参照例子实验的代码. package gui; import java.awt.BorderLayout; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.a

java 界面编程用socket实现服务端与客户端的循环通信。

服务端: package 实验五聊天; import java.awt.BorderLayout; import java.awt.EventQueue; import java.io.BufferedReader; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.InputStreamReader; import java.io.PrintWriter; import java.ne