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根据给定文件返回文件名和扩展名的方法
Mar 27 Python
Python单元测试框架unittest简明使用实例
Apr 13 Python
在Django框架中设置语言偏好的教程
Jul 27 Python
Python获取当前公网ip并自动断开宽带连接实例代码
Jan 12 Python
Python简单爬虫导出CSV文件的实例讲解
Jul 06 Python
Python学习笔记之Break和Continue用法分析
Aug 14 Python
Django 拆分model和view的实现方法
Aug 16 Python
python 字典套字典或列表的示例
Dec 16 Python
python3注册全局热键的实现
Mar 22 Python
Python使用Chrome插件实现爬虫过程图解
Jun 09 Python
怎么快速自学python
Jun 22 Python
Python下opencv使用hough变换检测直线与圆
Jun 18 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
CodeIgniter错误mysql_connect(): No such file or directory解决方法
2014/09/06 PHP
用js实现层随着内容大小动态渐变改变 推荐
2009/12/19 Javascript
浏览器脚本兼容 文本框中,回车键触发事件的兼容
2010/06/21 Javascript
js获得地址栏?问号后参数的方法
2013/08/08 Javascript
jquery 延迟执行实例介绍
2013/08/20 Javascript
js 判断上传文件大小及格式代码
2013/11/13 Javascript
两款JS脚本判断手机浏览器类型跳转WAP手机网站
2015/10/16 Javascript
jQuery定义插件的方法
2015/12/18 Javascript
Angular多选、全选、批量选择操作实例代码
2017/03/10 Javascript
对存在JavaScript隐式类型转换的四种情况的总结(必看篇)
2017/08/31 Javascript
JavaScript在web自动化测试中的作用示例详解
2019/08/25 Javascript
JS写滑稽笑脸运动效果
2020/05/28 Javascript
Python实现一个简单的MySQL类
2015/01/07 Python
Python开发如何在ubuntu 15.10 上配置vim
2016/01/25 Python
python中import学习备忘笔记
2017/01/24 Python
Python使用正则表达式抓取网页图片的方法示例
2017/04/21 Python
利用Tkinter和matplotlib两种方式画饼状图的实例
2017/11/06 Python
创建pycharm的自定义python模板方法
2018/05/23 Python
如何用Python实现简单的Markdown转换器
2018/07/16 Python
使用python进行波形及频谱绘制的方法
2019/06/17 Python
Django 中自定义 Admin 样式与功能的实现方法
2019/07/04 Python
python实现函数极小值
2019/07/10 Python
Python运行DLL文件的方法
2020/01/17 Python
《理想》教学反思
2014/02/17 职场文书
触电现场处置方案
2014/05/14 职场文书
学雷锋活动总结报告
2014/06/26 职场文书
党员志愿者活动总结
2014/06/26 职场文书
软环境建设心得体会
2014/09/09 职场文书
银行党的群众路线教育实践活动对照检查材料
2014/09/25 职场文书
银行授权委托书范本
2014/10/04 职场文书
2014年大学学生会工作总结
2014/12/02 职场文书
北京青年观后感
2015/06/15 职场文书
党风廉政教育心得体会2016
2016/01/22 职场文书
关于感恩的歌曲整理(8首)
2019/08/14 职场文书
Mysql超详细讲解死锁问题的理解
2022/04/01 MySQL
Python实现科学占卜 让视频自动打码
2022/04/09 Python