python-tkinter之按钮的使用,开关方法


Posted in Python onJune 11, 2019

具体参考哪位大佬的,记不太清楚了。

直接上代码,大体逻辑是这样的。

# -*- coding:utf-8 -*-
from tkinter import *
root=Tk()
 
def g():
  if b['text']=='开始':
    b['text']='关闭'
    print('开始')
  else:
    b['text']='开始'
    print('结束')
b=Button(root,text='开始',font=('KaiTi',36,'bold'),bg='pink',fg='green',bd=2,width=10,command=g)
b.pack()
root.mainloop()

python-tkinter之按钮的使用,开关方法

说一说我遇到的问题:

from tkinter import *
from tkinter import ttk
from tkinter.messagebox import *
import os
#log日志
class CountFrame(Frame): # 继承Frame类
  def __init__(self, master=None):
    Frame.__init__(self, master)
    self.root = master # 定义内部变量root
    self.createPage()
 
  def createPage(self):
    self.B=Button(self, text='开始', width=12, command=self.switch).grid(row=6, stick=E, pady=10)
  def switch(self):
    if self.B['text']=='开始':
      self.B['text']='结束'
      print(1)
    else:
      self.B['text']='开始'

我想让这个开始按钮,点击变成开始,再次点击变成结束。

python-tkinter之按钮的使用,开关方法

使用上面的方法是失败的,我发现self.B打印出来为空。

self.B=Button(self, text='开始', width=12, command=self.switch).grid(row=6, stick=E, pady=10)
grid(row=6, stick=E, pady=10)

是因为后面调用了grid方法导致的,两个对象公用一个对象有冲突,(grid为展示方法),一个调用,一个展示,把他们两个分开写。

下面是最终的代码:

from tkinter import *
from tkinter import ttk
from tkinter.messagebox import *
import os
 
 
#基础功能
class InputFrame(Frame): # 继承Frame类
  def __init__(self, master=None):
    Frame.__init__(self, master)
    self.root = master # 定义内部变量root
    self.itemName = StringVar()
    self.importPrice = StringVar()
    self.sellPrice = StringVar()
    self.deductPrice = StringVar()
    self.createPage()
 
  def createPage(self):
    Label(self).grid(row=0, stick=W, pady=10)
    Button(self,text='截屏',width=25,height=5,).grid(row=1, stick=W, pady=10)
    Button(self, text='录像',width=25,height=5,).grid(row=2, stick=W, pady=10)
 
#mongkey
class QueryFrame(Frame): # 继承Frame类
  def __init__(self, master=None):
    Frame.__init__(self, master)
    self.root = master # 定义内部变量root
    self.itemName = StringVar()
    self.importPrice = StringVar()
    self.sellPrice = StringVar()
    self.deductPrice = StringVar()
    self.number=StringVar()
    self.createPage()
 
  def createPage(self):
    Label(self).grid(row=0, stick=W, pady=10)
    Label(self, text='包名: ').grid(row=1, stick=W, pady=10)
    Entry(self, textvariable=self.itemName).grid(row=1, column=1, stick=E)
    Label(self, text='压力: ').grid(row=2, stick=W, pady=10)
    Entry(self, textvariable=self.importPrice).grid(row=2, column=1, stick=E)
    Label(self, text='标记: ').grid(row=3, stick=W, pady=10)
    Entry(self, textvariable=self.sellPrice).grid(row=3, column=1, stick=E)
    # 创建一个下拉列表
    Label(self, text='日志级别: ').grid(row=4, stick=W, pady=10)
    numberChosen = ttk.Combobox(self, width=12, textvariable=self.number, state='readonly')
    numberChosen['values'] = (1, 2, 3) # 设置下拉列表的值
    numberChosen.grid(column=1, row=4,stick=E) # 设置其在界面中出现的位置 column代表列  row 代表行
    numberChosen.current(1) # 设置下拉列表默认显示的值,1为 numberChosen['values'] 的下标值
 
    Checkbutton(self,text='忽略崩溃').grid(row=5, column=1, stick=E)
    Checkbutton(self, text='忽略超时').grid(row=6, column=1, stick=E)
    Checkbutton(self, text='崩溃日志').grid(row=7, column=1, stick=E)
    Button(self, text='开始压测').grid(row=8, column=5, stick=E, pady=5)
    Button(self, text='报告分析').grid(row=9, column=5, stick=E, pady=5)
 
 
 
#log日志
class CountFrame(Frame): # 继承Frame类
  def __init__(self, master=None):
    Frame.__init__(self, master)
    self.root = master # 定义内部变量root
    self.logLevel=StringVar()#日志级别
    self.label=StringVar()#过滤标签
    self.filterFormat=StringVar()#过滤项格式
    self.createPage()
 
  def createPage(self):
    Label(self, text='过滤标签: ').grid(row=1, stick=W, pady=10)
    Entry(self, textvariable=self.label).grid(row=1, column=1, stick=E)
    Label(self, text='过滤字符串: ').grid(row=2, stick=W, pady=10)
    Entry(self, textvariable=self.label).grid(row=2, column=1, stick=E)
    Label(self, text='正则过滤: ').grid(row=3, stick=W, pady=10)
    Entry(self, textvariable=self.label).grid(row=3, column=1, stick=E)
    #日志级别############################################################
    # 创建一个下拉列表
    Label(self, text='日志级别: ').grid(row=4, stick=W, pady=10)
    Label(self).grid(row=0, stick=W, pady=10)
    numberChosen = ttk.Combobox(self, width=12, textvariable=self.logLevel, state='readonly')
    numberChosen['values'] = (1, 2, 3) # 设置下拉列表的值
    numberChosen.grid(column=1, row=4, stick=E) # 设置其在界面中出现的位置 column代表列  row 代表行
    numberChosen.current(1) # 设置下拉列表默认显示的值,1为 numberChosen['values'] 的下标值
    #过滤格式############################################################
    Label(self, text='过滤项格式: ').grid(row=5, stick=W, pady=10)
    Label(self).grid(row=0, stick=W, pady=10)
    filterFormat = ttk.Combobox(self, width=12, textvariable=self.filterFormat, state='readonly')
    #-- V : Verbose (明细);
    #-- D : Debug (调试);
    #-- I : Info (信息);
    #-- W : Warn (警告);
    #-- E : Error (错误);
    #-- F : Fatal (严重错误);
    filterFormat['values'] = ('Verbose','Debug','Warn','Error','Fatal') # 设置下拉列表的值
    filterFormat.grid(column=1, row=5, stick=E) # 设置其在界面中出现的位置 column代表列  row 代表行
    filterFormat.current(1) # 设置下拉列表默认显示的值,1为 numberChosen['values'] 的下标值
    self.B=Button(self, text='开始', width=12,command=self.switch )
    self.B.grid(row=6, stick=E, pady=10)
    # Button(self, text='生成日志', width=12, ).grid(row=6, stick=E, pady=10)
 
  def switch(self):
    if self.B['text']=='开始':
      self.B['text']='结束'
      print(1)
    else:
      self.B['text']='开始'
 
 
#性能测试界面
class AboutFrame(Frame): # 继承Frame类
  def __init__(self, master=None):
    Frame.__init__(self, master)
    self.root = master # 定义内部变量root
    self.createPage()
 
  def createPage(self):
    Label(self, text='性能测试开发中').pack()
 
 
#设置页面
class SeetingFrame(Frame): # 继承Frame类
  def __init__(self, master=None):
    Frame.__init__(self, master)
    self.root = master # 定义内部变量root
    self.createPage()
 
  def createPage(self):
    Label(self, text='设置开发中').pack()

以上这篇python-tkinter之按钮的使用,开关方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python中的__init__ 、__new__、__call__小结
Apr 25 Python
测试、预发布后用python检测网页是否有日常链接
Jun 03 Python
解决Django模板无法使用perms变量问题的方法
Sep 10 Python
Tornado 多进程实现分析详解
Jan 12 Python
Python实用技巧之列表、字典、集合中根据条件筛选数据详解
Jul 11 Python
django中ORM模型常用的字段的使用方法
Mar 05 Python
用Python抢火车票的简单小程序实现解析
Aug 14 Python
Python生成个性签名图片获取GUI过程解析
Dec 16 Python
Python中有几个关键字
Jun 04 Python
通过案例解析python鸭子类型相关原理
Oct 10 Python
详解Django的MVT设计模式
Apr 29 Python
详解非极大值抑制算法之Python实现
Jun 28 Python
人工神经网络算法知识点总结
Jun 11 #Python
解决django后台样式丢失,css资源加载失败的问题
Jun 11 #Python
python实现合并多个list及合并多个django QuerySet的方法示例
Jun 11 #Python
Python GUI编程 文本弹窗的实例
Jun 11 #Python
Python API 自动化实战详解(纯代码)
Jun 11 #Python
Python-while 计算100以内奇数和的方法
Jun 11 #Python
python操作文件的参数整理
Jun 11 #Python
You might like
php 执行系统命令的方法
2009/07/07 PHP
PHP实现GIF图片验证码
2015/11/04 PHP
PHP实现RTX发送消息提醒的实例代码
2017/01/03 PHP
原生JS实现Ajax通过GET方式与PHP进行交互操作示例
2018/05/12 PHP
extjs grid取到数据而不显示的解决
2008/12/29 Javascript
在网页中插入百度地图的步骤详解
2016/12/02 Javascript
w3c编程挑战_初级脚本算法实战篇
2017/06/23 Javascript
Angularjs的键盘事件的绑定
2017/07/27 Javascript
微信小程序之电影影评小程序制作代码
2017/08/03 Javascript
深入理解Angularjs 脏值检测
2018/10/12 Javascript
vue添加class样式实例讲解
2019/02/12 Javascript
微信小程序本地存储实现每日签到、连续签到功能
2019/10/09 Javascript
微信小程序国际化探索实现(附源码地址)
2020/05/20 Javascript
在Django中管理Users和Permissions以及Groups的方法
2015/07/23 Python
python&MongoDB爬取图书馆借阅记录
2016/02/05 Python
Python中的with语句与上下文管理器学习总结
2016/06/28 Python
python 每天如何定时启动爬虫任务(实现方法分享)
2018/05/21 Python
Django 中使用流响应处理视频的方法
2018/07/20 Python
在Python中字典根据多项规则排序的方法
2019/01/21 Python
python爬虫开发之PyQuery模块详细使用方法与实例全解
2020/03/09 Python
创造美妙香氛体验:Aera扩散器和香水
2018/11/25 全球购物
远程学习的教学用品和家庭学习资源:Really Good Stuff
2020/04/27 全球购物
傲盾软件面试题
2015/08/17 面试题
shell的种类有哪些
2015/04/15 面试题
怎么样写好简历中的自我评价
2013/10/25 职场文书
《雷雨》教学反思
2014/02/20 职场文书
农民工工资承诺书范文
2014/03/31 职场文书
求职信怎么写范文
2014/05/26 职场文书
车辆工程专业求职信
2014/06/14 职场文书
领导班子作风建设年个人整改措施
2014/09/29 职场文书
2015年禁毒工作总结
2015/04/30 职场文书
学生会任命书范本
2015/09/21 职场文书
《莫泊桑拜师》教学反思
2016/02/22 职场文书
nginx配置文件使用环境变量的操作方法
2021/06/02 Servers
如何通过cmd 连接阿里云服务器
2022/04/18 Servers
Spring Boot 实现 WebSocket
2022/04/30 Java/Android