编程语言
首页 > 编程语言> > python之tk学习,闲鱼搜索-小记

python之tk学习,闲鱼搜索-小记

作者:互联网

作为一个彻底的门外汉,始终对编程有好感,逻辑,总是让人如痴如醉,这是题外话。

下面进入正题。

火热的天气配上火热的python,python的入门友好性让门外汉们都看到了希望。当然自己写的程序如果没有GUI,很难让别人很好的使用,在这个基础上,学习了python的入门GUI——tk。

学习总是要学以致用,现在电脑上搜索闲鱼比较困难,就诞生这个闲鱼搜索工具,下面直接贴上代码。仅供记录学习tk之用,勿用做商业用途。

import webbrowser
import re 
import urllib
from urllib import parse
from tkinter import *
from tkinter import ttk
import tkinter as tk
from tkinter import scrolledtext
from tkinter import Menu
import tkinter.messagebox
import tkinter as tk
from tkinter import StringVar, IntVar
from tkinter import Tk, Checkbutton, Label

def get_screen_size(window):
    return window.winfo_screenwidth(),window.winfo_screenheight()
 
def get_window_size(window):
    return window.winfo_reqwidth(),window.winfo_reqheight()
 
def center_window(root, width, height):
    screenwidth = root.winfo_screenwidth()
    screenheight = root.winfo_screenheight()
    size = '%dx%d+%d+%d' % (width, height, (screenwidth - width)/2, (screenheight - height)/2)
    #print(size)
    root.geometry(size)
    
def search(*args):
    try:
        name=str(feet.get())
        vv=str(v.get())
        if vv=='1':
            name3 = urllib.parse.quote(name,encoding='gbk')
            name3=name3.replace("%2B","%20")
            addstime='https://s.2.taobao.com/list?st_edtime=1&q='+name3+'&ist=1'
            adds=str(addstime)
            webbrowser.open(adds)
            #feet.set("")
            feet_entry.focus()
            return content()
        elif vv=='2':
            name3 = urllib.parse.quote(name,encoding='gbk')
            name3=name3.replace("%2B","%20")
            addsprice='https://s.2.taobao.com/list?st_price=0&q='+name3+'&ist=1'
            adds=str(addsprice)
            webbrowser.open(adds)
            #feet.set("")
            feet_entry.focus()
            return content()
        elif vv=='3':
            name=name.replace("+","%20")
            adds='https://s.2.taobao.com/list?q=' + name + '&search_type=item&_input_charset=utf8'
            adds=str(adds)
            webbrowser.open(adds)
            feet_entry.focus()
            return content()
        else:
            name=name.replace("+","%20")
            adds='https://s.2.taobao.com/list?q=' + name + '&search_type=item&_input_charset=utf8'
            adds=str(adds)
            webbrowser.open(adds)
            feet_entry.focus()
            return content()
    except ValueError:
        pass

def clear(*args):
    try:
        feet.set("")
        scr.config(state=NORMAL)
        scr.delete(0.0,tk.END)
        scr.config(state=DISABLED)
        feet_entry.focus()
    except ValueError:
        pass

def callback(event):
    return search()

def content():
    scr.config(state=NORMAL)
    value = str(feet.get())
    value=value.replace("'\n'","")
    ttk.Label(mainframe, text='').grid(column=1, row=2,sticky='W')
    ttk.Label(mainframe, text=value+" "+" "+" "+" "+" "+" "+" "+" "+" "+" "+" "+" "+" "+" "+" ").grid(column=1, row=2,sticky='W')
    ttk.Label(mainframe, text='当前在第%d'%1+'页').grid(column=2, row=2,sticky='W')
    oldvalue=scr.get(0.0,tk.END)
    delvalue=scr.delete(0.0,tk.END)
    scr.insert(tk.INSERT,value +'\n'+oldvalue)
    scr.config(state=DISABLED)
    global page
    page=int(1)
    feet_entry.focus()

page=int(1)
def nextpage():
    global page
    page=page+1
    vv=str(v.get())
    if vv=='1':
        if page==1:
            page=int(2)
            qname=str(feet.get())
            qname = urllib.parse.quote(qname,encoding='gbk')
            qname=qname.replace("%2B","%20")
            ttk.Label(mainframe, text='').grid(column=2, row=2,sticky='W')
            ttk.Label(mainframe, text='当前在第%d'%page+'页').grid(column=2, row=2,sticky='W')
            href='https://s.2.taobao.com/list?st_edtime=1&page=%d'%(page) + '&q=' + qname + '&ist=1'
            href=str(href)
            webbrowser.open(href,new=0,autoraise=False)
        else:
            qname=str(feet.get())
            qname = urllib.parse.quote(qname,encoding='gbk')
            qname=qname.replace("%2B","%20")
            ttk.Label(mainframe, text='').grid(column=2, row=2,sticky='W')
            ttk.Label(mainframe, text='当前在第%d'%page+'页').grid(column=2, row=2,sticky='W')
            href='https://s.2.taobao.com/list?st_edtime=1&page=%d'%(page) + '&q=' + qname + '&ist=1'
            href=str(href)
            webbrowser.open(href,new=0,autoraise=False)
    elif vv=='2':
        if page==1:
            page=int(2)
            qname=str(feet.get())
            qname = urllib.parse.quote(qname,encoding='gbk')
            qname=qname.replace("%2B","%20")
            ttk.Label(mainframe, text='').grid(column=2, row=2,sticky='W')
            ttk.Label(mainframe, text='当前在第%d'%page+'页').grid(column=2, row=2,sticky='W')
            href='https://s.2.taobao.com/list?st_price=0&page=%d'%(page) + '&q=' + qname + '&ist=1'
            href=str(href)
            webbrowser.open(href,new=0,autoraise=False)
        else:
            qname=str(feet.get())
            qname = urllib.parse.quote(qname,encoding='gbk')
            qname=qname.replace("%2B","%20")
            ttk.Label(mainframe, text='').grid(column=2, row=2,sticky='W')
            ttk.Label(mainframe, text='当前在第%d'%page+'页').grid(column=2, row=2,sticky='W')
            href='https://s.2.taobao.com/list?st_price=0&page=%d'%(page) + '&q=' + qname + '&ist=1'
            href=str(href)
            webbrowser.open(href,new=0,autoraise=False)
    elif vv=='3':
        if page==1:
            page=int(2)
            qname=str(feet.get())
            qname = urllib.parse.quote(qname,encoding='gbk')
            qname=qname.replace("%2B","%20")
            ttk.Label(mainframe, text='').grid(column=2, row=2,sticky='W')
            ttk.Label(mainframe, text='当前在第%d'%page+'页').grid(column=2, row=2,sticky='W')
            href='https://s.2.taobao.com/list?st_trust=1&page=%d'%(page) + '&q=' + qname + '&ist=1'
            href=str(href)
            webbrowser.open(href,new=0,autoraise=False)
        else:
            qname=str(feet.get())
            qname = urllib.parse.quote(qname,encoding='gbk')
            qname=qname.replace("%2B","%20")
            ttk.Label(mainframe, text='').grid(column=2, row=2,sticky='W')
            ttk.Label(mainframe, text='当前在第%d'%page+'页').grid(column=2, row=2,sticky='W')
            href='https://s.2.taobao.com/list?st_trust=1&page=%d'%(page) + '&q=' + qname + '&ist=1'
            href=str(href)
            webbrowser.open(href,new=0,autoraise=False)
    else:
        if page==1:
            page=int(2)
            qname=str(feet.get())
            qname = urllib.parse.quote(qname,encoding='gbk')
            qname=qname.replace("%2B","%20")
            ttk.Label(mainframe, text='').grid(column=2, row=2,sticky='W')
            ttk.Label(mainframe, text='当前在第%d'%page+'页').grid(column=2, row=2,sticky='W')
            href='https://s.2.taobao.com/list?st_trust=1&page=%d'%(page) + '&q=' + qname + '&ist=1'
            href=str(href)
            webbrowser.open(href,new=0,autoraise=False)
        else:
            qname=str(feet.get())
            qname = urllib.parse.quote(qname,encoding='gbk')
            qname=qname.replace("%2B","%20")
            ttk.Label(mainframe, text='').grid(column=2, row=2,sticky='W')
            ttk.Label(mainframe, text='当前在第%d'%page+'页').grid(column=2, row=2,sticky='W')
            href='https://s.2.taobao.com/list?st_trust=1&page=%d'%(page) + '&q=' + qname + '&ist=1'
            href=str(href)
            webbrowser.open(href,new=0,autoraise=False)
            
def prepage():
    global page
    page=page-1
    vv=str(v.get())
    if vv=='1':
        if page<1:
            tk.messagebox.showinfo(title='到首页了',message='已经是第一页了!')
        else:
            qname=str(feet.get())
            qname = urllib.parse.quote(qname,encoding='gbk')
            qname=qname.replace("%2B","%20")
            ttk.Label(mainframe, text='').grid(column=2, row=2,sticky='W')
            ttk.Label(mainframe, text='当前在第%d'%page+'页').grid(column=2, row=2,sticky='W')
            href='https://s.2.taobao.com/list?st_edtime=1&page=%d'%(page) + '&q=' + qname + '&ist=1'
            href=str(href)
            webbrowser.open_new(href)
    elif vv=='2':
        if page<1:
            tk.messagebox.showinfo(title='到首页了',message='已经是第一页了!')
        else:
            qname=str(feet.get())
            qname = urllib.parse.quote(qname,encoding='gbk')
            qname=qname.replace("%2B","%20")
            ttk.Label(mainframe, text='').grid(column=2, row=2,sticky='W')
            ttk.Label(mainframe, text='当前在第%d'%page+'页').grid(column=2, row=2,sticky='W')
            href='https://s.2.taobao.com/list?st_price=0&page=%d'%(page) + '&q=' + qname + '&ist=1'
            href=str(href)
            webbrowser.open_new(href)
    elif vv=='3':
        if page<1:
            tk.messagebox.showinfo(title='到首页了',message='已经是第一页了!')
        else:
            qname=str(feet.get())
            qname = urllib.parse.quote(qname,encoding='gbk')
            qname=qname.replace("%2B","%20")
            ttk.Label(mainframe, text='').grid(column=2, row=2,sticky='W')
            ttk.Label(mainframe, text='当前在第%d'%page+'页').grid(column=2, row=2,sticky='W')
            href='https://s.2.taobao.com/list?st_trust=1&page=%d'%(page) + '&q=' + qname + '&ist=1'
            href=str(href)
            webbrowser.open_new(href)
    else:
        if page<1:
            tk.messagebox.showinfo(title='到首页了',message='已经是第一页了!')
        else:
            qname=str(feet.get())
            qname = urllib.parse.quote(qname,encoding='gbk')
            qname=qname.replace("%2B","%20")
            ttk.Label(mainframe, text='').grid(column=2, row=2,sticky='W')
            ttk.Label(mainframe, text='当前在第%d'%page+'页').grid(column=2, row=2,sticky='W')
            href='https://s.2.taobao.com/list?st_trust=1&page=%d'%(page) + '&q=' + qname + '&ist=1'
            href=str(href)
            webbrowser.open_new(href)

def modified(self, event):
    self.txt.see(END)

def mousejian(*args):
    scr.config(state=NORMAL)
    #获取鼠标指针所在行号列号
    rowcol=scr.index('insert')
    #获取当前光标所在行号列号
    rowcolv=str(rowcol)
    rowcolv=float(rowcol)
    vcopy=scr.get(rowcolv,rowcolv+1)
    scr.config(state=DISABLED)
    vcopy=vcopy.strip()
    feet.set(vcopy)
       
root = Tk()
root.title("剁手搜索")
root.resizable(0,0)
center_window(root, 320, 350)
root.maxsize(int(get_screen_size(root)[0]), int(get_screen_size(root)[1]))
root.minsize(320, 350)
root.bind("<Key-Return>", callback)
root.bind("<Double-Button-1>",mousejian)

mainframe = ttk.Frame(root, padding="0 0 0 0",height=40,width=320)
mainframe.grid(column=0, row=0, padx=0, pady=0,sticky=(N, W, E, S))
mainframe.columnconfigure(0, weight=1)
mainframe.rowconfigure(0, weight=1)

feet = StringVar()
ttk.Label(mainframe, text="请输入内容:").grid(column=0, row=0,sticky='W')
feet_entry = ttk.Entry(mainframe, width=18, textvariable=feet)#feet)
feet_entry.grid(column=1, row=0, sticky=(W, E))
#获取当前正在搜索内容
valueD=str(feet.get())
valueD = urllib.parse.quote(valueD,encoding='gbk')
valueD=valueD.replace("%2B","%20")
but1=ttk.Button(mainframe, text="剁手搜索", width=10,command=search).grid(column=2, row=0,sticky='W')
#createToolTip(but1,'回车快速搜索')
ttk.Button(mainframe, text="清空记录", width=10,command=clear).grid(column=2, row=1,sticky='W')
#selects = [('最新发布',1),('价格升序',2)]
v = IntVar() #tkinter专用整型变量
v.set(3) #设置v的值为1,值多少无所谓了,我的理解是第一组写1,第二组写2,一次递增
ttk.Radiobutton(mainframe,text="最新发布",width=7,variable = v,value = 1).grid(column=0, row=1,sticky='W') #,command=RadioCall ,command=RadioCall
ttk.Radiobutton(mainframe,text="价格升序",width=7,variable = v,value = 2).grid(column=1, row=1,sticky='W')
ttk.Radiobutton(mainframe,text="默认",width=4,variable = v,value = 3).grid(column=1, row=1,sticky='E')
ttk.Label(mainframe, text="当前正搜索:").grid(column=0, row=2,sticky='W')
ttk.Button(mainframe, text="下一页", width=8,command=nextpage).grid(column=0, row=3,sticky='W')
ttk.Button(mainframe, text="上一页", width=8,command=prepage).grid(column=1, row=3,sticky='W')
#历史记录
scrolW  = 30; scrolH  =  16
scr = scrolledtext.ScrolledText(width=scrolW, height=scrolH, wrap=tk.WORD) #monty,
scr.grid(column=0, row=4, sticky='WE', columnspan=3)
scr.config(state=DISABLED)
for child in mainframe.winfo_children(): child.grid_configure(padx=3, pady=3)
feet_entry.focus()
root.mainloop()

  

 

标签:python,qname,href,ttk,闲鱼,mainframe,grid,tk,page
来源: https://www.cnblogs.com/lanpiawu/p/11147021.html