# -*- coding: utf-8 -*-
# @Time : 2021/11/23 15:50
# @Author : 码小白--
# @Email : ss@qq.com
# @File : FFFF.py
# @Software: PyCharm
import socket
from tkinter import *
from tkinter import filedialog
from tkinter.filedialog import *
class A:
"""
使用StringVar() 和 textvariable
对Button进行绑定
实现Button对数据进行操作
解决Button传参问题
StringVar()的数需要使用.get()获取值
"""
def __init__(self, root):
self.root=root
self.ip = StringVar() # 第一个数字
self.port = IntVar() # 第一个数字
self.log=StringVar()
self.count=IntVar()
self.createpage()
self.filename = StringVar()
def show(self):
num=self.var.get()
if num==1:
self.action()
else:
self.action1()
def createpage(self):
self.var=IntVar()
self.var.set(0)
Label(self.root, text="选择方式", bg="lightyellow", width=30).grid(row=0, column=0)
man =Radiobutton(self.root, text="手动", variable=self.var, value=1, command=self.show)
man.grid(row=0, column=1)
woman =Radiobutton(self.root, text="自动", variable=self.var, value=2, command=self.show)
woman.grid(row=0, column=2)
def action(self):
Label(self.root, text="请输入ip:", font=('宋体', 9)).grid(row=1, column=0)
Label(self.root, text="请输入端口:", font=('宋体', 9)).grid(row=2, column=0)
Label(self.root, text="请输入日志:", font=('宋体', 9)).grid(row=3, column=0)
Label(self.root, text="请输入次数:", font=('宋体', 9)).grid(row=4, column=0)
Entry(self.root,textvariable=self.ip).grid(row=1, column=1)
Entry(self.root,textvariable=self.port).grid(row=2, column=1)
Entry(self.root,textvariable=self.log).grid(row=3, column=1)
Entry(self.root,textvariable=self.count).grid(row=4, column=1)
Button(self.root, text='运行', width='10',command=self.btn_def).grid(row=4, column=2)
def btn_def(self):
# 使用.get()获取值
IP=self.ip.get()
PORT=int(self.port.get())
LOG=self.log.get()
COUNT=int(self.count.get())
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
for a in range(COUNT):
s.sendto(LOG.encode(), (IP, PORT))
s.close()
def btn_def1(self):
# 获取输入框内容
IP=self.ip.get()
PORT=int(self.port.get().strip())
LOG=self.log.get()
COUNT=int(self.count.get().strip())
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
for a in range(COUNT):
f=open(LOG,'r')
for i in f:
s.sendto(LOG.encode(), (IP, PORT))
f.close()
def Huofile(self):
file_path = filedialog.askopenfilename()
self.filename.set(file_path) # 设置filename值,输出的值为io流
def action1(self):
Label(root, text="请输入ip :", font=('宋体', 9)).grid(row=1, column=0)
Label(root, text="请输入端口 :", font=('宋体', 9)).grid(row=2, column=0)
Label(root, text="选择文件 :", font=('宋体', 9)).grid(row=3, column=0)
Label(root, text="请输入次数 :", font=('宋体', 9)).grid(row=4, column=0)
# 设置输入框
Entry(root,textvariable=self.ip).grid(row=1, column=1)
Entry(root,textvariable=self.port).grid(row=2, column=1)
# 输入端口框
Entry(root,textvariable=self.count).grid(row=4, column=1)
# 输入次数框
Entry(root, textvariable=self.filename).grid(row=3, column=1)
# 获取文件路径框
Button(root, text='运行', width='10', command=self.btn_def1).grid(row=4, column=2)
# 按钮3
Button(root, text='选择', width='10', command=self.Huofile).grid(row=3, column=2)
if __name__ == '__main__':
root = Tk()
A(root)
root.title('测试')
root.geometry('500x200')
root.mainloop()