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中chr、unichr、ord字符函数之间的对比
Jun 16 Python
Python实现自动为照片添加日期并分类的方法
Sep 30 Python
每天迁移MySQL历史数据到历史库Python脚本
Apr 13 Python
Django migrations 默认目录修改的方法教程
Sep 28 Python
python 字符串只保留汉字的方法
Nov 16 Python
Python 解析pymysql模块操作数据库的方法
Feb 18 Python
Python3 xml.etree.ElementTree支持的XPath语法详解
Mar 06 Python
Python如何存储数据到json文件
Mar 09 Python
Python 爬虫性能相关总结
Aug 03 Python
django跳转页面传参的实现
Sep 17 Python
关于探究python中sys.argv时遇到的问题详解
Feb 23 Python
python函数的两种嵌套方法使用
Apr 02 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
phpMyAdmin下载、安装和使用入门教程
2007/05/31 PHP
php empty()与isset()区别的详细介绍
2013/06/17 PHP
PHP Session机制简介及用法
2014/08/19 PHP
对PHP PDO的一些认识小结
2015/01/23 PHP
php使用curl打开https网站的方法
2015/06/17 PHP
php解决crontab定时任务不能写入文件问题的方法分析
2019/09/16 PHP
FireFox中textNode分片的问题
2007/04/10 Javascript
IE6 弹出Iframe层中的文本框“经常”无法获得输入焦点
2009/12/27 Javascript
javascript SpiderMonkey中的函数序列化如何进行
2012/12/05 Javascript
JavaScript子窗口调用父窗口变量和函数的方法
2015/10/09 Javascript
Jquery实现select multiple左右添加和删除功能的简单实例
2016/05/26 Javascript
jQuery实现图片轮播效果代码
2016/09/27 Javascript
Easyui在treegrid添加控件的实现方法
2017/06/23 Javascript
浅谈Vue内置component组件的应用场景
2018/03/27 Javascript
js单线程的本质 Event Loop解析
2019/10/29 Javascript
微信域名检测接口调用演示步骤(含PHP、Python)
2019/12/08 Javascript
vue Element左侧无限级菜单实现
2020/06/10 Javascript
vue离开当前页面触发的函数代码
2020/09/01 Javascript
[03:46]DAC趣味视频-中文考试.mp4
2017/04/02 DOTA
python每隔N秒运行指定函数的方法
2015/03/16 Python
介绍Python中内置的itertools模块
2015/04/29 Python
Python中函数eval和ast.literal_eval的区别详解
2017/08/10 Python
Django使用AJAX调用自己写的API接口的方法
2019/03/06 Python
pandas DataFrame 交集并集补集的实现
2019/06/24 Python
Django 创建/删除用户的示例代码
2019/07/24 Python
解决Django中修改js css文件但浏览器无法及时与之改变的问题
2019/08/31 Python
Python3 操作 MySQL 插入一条数据并返回主键 id的实例
2020/03/02 Python
Opencv常见图像格式Data Type及代码实例
2020/11/02 Python
.NET面试10题
2014/02/24 面试题
家长会学生演讲稿
2014/04/26 职场文书
财务负责人任命书
2014/06/06 职场文书
中国梦口号
2014/06/13 职场文书
电教室标语
2014/06/20 职场文书
2015军训通讯稿大全
2015/07/18 职场文书
《没有任何借口》读后感:完美的执行能力
2020/01/07 职场文书
企业版Windows 11有哪些新功能? Win11适用于企业的功能介绍
2021/11/21 数码科技