小蛇学python(10)tkinter和pandas的补充

本文主要是想对写界面以及操作表格遇到的常见问题做个总结。前两篇文章想想对tkinter和pandas这两个库的概述还不够全面。

如何点击按钮弹出新界面

如何在主界面中点击按钮从而弹出新界面是做界面设计最常遇到的问题。其实很简单,在主界面中定义一个按钮,然后将按钮绑定一个函数,再在这个函数中定义新界面。

#!/usr/bin/env python
# _*_coding:utf-8_*_
# Author: DDZZxiaohongdou
from tkinter import *
from tkinter import scrolledtext
import tkinter as tk

def MessageBox():
    t1 = Toplevel(height=700, width=700)
    t1.title('查询分析界面')
    label_analyse = Label(t1, text='数据分析')
    label_analyse.grid(row=0)
    anaylse_label1 = Label(t1, text='影片属性分析')
    anaylse_label1.grid(row=1, column=1, pady=5)
    anaylse_label1 = Label(t1, text='影评词云可视化')
    anaylse_label1.grid(row=1, column=2, pady=5)
    anaylse_label1 = Label(t1, text='影片国家分析')
    anaylse_label1.grid(row=1, column=3, pady=5)

root = Tk()
root.title("豆瓣分析系统")

button_final = Button(root, text = '爬虫')
button_final.grid(row = 0, column = 0, padx = 30)

button1 = Button(root,text = '前往查询界面',command = MessageBox)
button1.grid(row = 1, column = 0, padx = 10)

text1 = scrolledtext.ScrolledText(root, width =120, height = 20, wrap=tk.WORD)
text1.grid(row = 0, column = 1, columnspan=4, rowspan=2, sticky=W, padx=100, pady=40)

root.mainloop()

注意,MessageBox这个函数是没有参数的,所以用command绑定的时候呢不要加括号。至于加了括号会出现什么?会有惊喜你可以试试。

还有一点要注意的是,主界面是root,弹出来的界面叫t1。在主界面的控件里,括号里都先写了root,而toplevel这个弹出界面里的所有控件,定义的括号里前面都要改为t1。如果不改,会出现一个很有意思的事情,就是你本来想弹出的界面,会主动加载到主界面上。其实这也是个很有意思的功能,在适当的时候这么用也很美观。

grid布局再深入

tk中的三种布局方式中,我最喜欢的是grid,尽管pack也有它的优势。

无论那种布局都无法达到一下子心满意足的地步,就像写前端网页一样,不停的在调整调整。这里介绍几个参数帮助大家更高效的调整。

大家都知道column,row,一个表示列,一个表示行。不过还有两个参数叫做columnspan,rowspan,这四个参数可以两两配合使用。比如column=1, columnspan = 4的意思就是从第二列开始,这个控件占据四列,就是说第二、三、四、五列都是这个控件的,下个控件最多也只能从第六列开始放置了。

sticky这个参数是来控制控件对齐的。

from tkinter import *


root = Tk()
root.title("小蛇学python")

button_final = Button(root, text = '控件1')
button_final.grid(row = 0, column = 0)

button1 = Button(root,text = '小红豆')
button1.grid(row = 1, column = 0)

root.mainloop()

随便写一个界面,它现在是这样的。

最初.png

界面太小了,我们把它扩大一些。

root.minsize(400, 300)
扩大界面后.png

我们不想让这两个按钮靠的太近,不美观。

button_final = Button(root, text = '控件1')
button_final.grid(row = 0, column = 0, padx = 10, pady = 10)

button1 = Button(root,text = '小红豆')
button1.grid(row = 1, column = 0, padx = 10, pady = 10)
扩大上下左右间距.png

可以看出来,现在是左对齐。我们想让它们又对齐。这时候就需要用到sticky了。

button_final = Button(root, text = '控件1')
button_final.grid(row = 0, column = 0, padx = 10, pady = 10,sticky = E)

button1 = Button(root,text = '跌跌撞撞小红豆')
button1.grid(row = 1, column = 0, padx = 10, pady = 10,sticky = E)
右对齐之后.png

如何让输出的dataframe表格更美观对齐

除了利用juputer notebook之外,还有一个方法就是把dataframe的表格形式转化为多为数组,然后以table的形式输出。

data = {'state' : ['Ohio', 'Ohio', 'Ohio', 'Nevada', 'Nevada'],
        'year'  : [2000, 2001, 2002, 2003, 2004,],
        'pop'   : [12313, 1213, 3131, 1213, 121321]}
frame = DataFrame(data)
print(frame)

现在很对齐是不是?

初始化

我们加多数据类型,让他不好对齐。


data = {'state' : ['Ohio', 'Ohio', 'Ohio', 'Nevada', 'Nevada'],
        '哈哈哈': ['小红豆', '大红豆', '跌跌撞撞', '跌跌撞撞小红豆', '跌跌撞撞大红豆~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~'],
        'year'  : [2000, 2001, 2002, 2003, 2004,],
        'pop'   : [12313, 1213, 3131, 1213, 121321]}
frame = DataFrame(data)
print(frame)
不对齐

然后怎么办呢?

head = list(frame)
content = frame.values.tolist()
data_output = []
data_output.append(head)
for i in content:
    data_output.append(i)
data_output = AsciiTable(data_output)
print(data_output.table)
表格

大功告成!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,186评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,858评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,620评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,888评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,009评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,149评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,204评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,956评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,385评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,698评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,863评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,544评论 4 335
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,185评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,899评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,141评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,684评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,750评论 2 351

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,894评论 25 707
  • ¥开启¥ 【iAPP实现进入界面执行逐一显】 〖2017-08-25 15:22:14〗 《//首先开一个线程,因...
    小菜c阅读 6,381评论 0 17
  • 1.ios高性能编程 (1).内层 最小的内层平均值和峰值(2).耗电量 高效的算法和数据结构(3).初始化时...
    欧辰_OSR阅读 29,348评论 8 265
  • 曾多次郝凡助教与玉民助教劝说让我戒烟,但我一直避开与无视这个问题。也经常会对自己说戒烟没纳入宣言之内,身处于夜...
    罗剑华阅读 88评论 2 1
  • 她回复我一句回不去了…… 却让我思绪万千…… 但愿不是我自己想太多了,可事实就是我想了很多很多…… 半夜将近一点,...
    静墨染允阅读 697评论 1 1