Python-GUI(2)

消息机制(联系前端和后端的消息)

-自动发出事件
-有系统将消息发送放到队列
-由相关的组件进行绑定/设置
-后端自动选择感兴趣的事件并作出相应的反应

消息的格式
-<[modifier-]—type-[-detail]>
:表示一个按钮事件,1代表鼠标左键,2代表中建
:键盘A键位

Tkinter的绑定

-bind_all:全局范围的绑定,默认是全局快捷键,比如F1是帮助文档
-bind_class:接受三个参数,第一个是类名,第二个是事件,第三个式操作
-w.bind_class(“Entry”,"",my_func)
-bind:单独对一个个实例绑定
-unbind:解绑,需要解绑那个事件作为参数

#消息机制的简单实例
import tkinter
def baselabel(event):
    global baseFrame
    lb=tkinter.Label(baseFrame,text='谢谢点击')
    lb.grid(row=0,column=1)
#画出程序的总框架
baseFrame=tkinter.Tk()
#label绑定相应的消息和处理函数
#自动获取左键点击消息,并启动baselabel函数
lb=tkinter.Label(baseFrame,text='模拟按钮')
lb.bind("<Button-1>",baselabel)
lb.grid(row=0,column=0)
#启动消息循环
baseFrame.mainloop()

Entry

输入框
entry[“show”]="*",设置遮挡字符

# -*-coding: UTF-8 -*-
# @Time:2018/12/1719:14
# @author superxjz
# @func
import tkinter
def reg():
    #获取用户的输入
    name=e1.get()
    pwd=e2.get()
    #计算输入的长度
    t1=len(name)
    t2=len(pwd)

    if name=='111' and pwd=='222':
        lb3['text']="登陆成功"
    else:
        lb3['text']="用户名或密码错误"
        #删除用户的输入
        #两个参数是位置
        e1.delete(0,t1)
        e2.delete(0,t2)
baseFrame=tkinter.Tk()
lb1=tkinter.Label(baseFrame,text="name")
lb1.grid(row=0,column=0,stick=tkinter.W)

e1=tkinter.Entry(baseFrame)
e1.grid(row=0,column=1,stick=tkinter.W)

lb2=tkinter.Label(baseFrame,text="pwd")
lb2.grid(row=1,column=0,stick=tkinter.W)

e2=tkinter.Entry(baseFrame)
e2.grid(row=1,column=1,stick=tkinter.W)
e2["show"]='*'
btn=tkinter.Button(baseFrame,text='登陆',command=reg)
btn.grid(row=2,column=1,stick=tkinter.W)

lb3=tkinter.Label(baseFrame,text=" ")
lb3.grid(row=3)

baseFrame.mainloop()

菜单

普通菜单
-第一个Menu类定义的是parent
-add_command添加菜单项,如果菜单是顶层菜单,则从左向右添加,否则就是下拉菜单
-label:指定菜单项名称
-command:点击后相应的调用函数
-acceletor:快捷键
-underline:制定是否菜单信息下有横线
-menu:属性指定使用哪一个作为顶级菜单

import tkinter
baseFrame=tkinter.Tk()
menubar=tkinter.Menu(baseFrame)
for item in ['file','edit','view','about']:
    menubar.add_command(label=item)
baseFrame['menu']=menubar
baseFrame.mainloop()

级联菜单

-add_cascade:级联菜单,作用是引出后面的菜单
-add_cascade的menu属性:指明把菜单级联到哪个菜单上
-label:名称
-菜单建立过程:1-建立menu实例,2-add_command,3-add_cascade

import tkinter
baseFrame=tkinter.Tk()
#定义了一个菜单
menubar=tkinter.Menu(baseFrame)
#又定义了一个菜单
emenu=tkinter.Menu(menubar)
#给emenu菜单名字赋值
for item in ['copy','past','cut']:
    emenu.add_command(label=item)
menubar.add_cascade(label='file')
#给名字叫做edit的菜单标签关联emenu菜单
menubar.add_cascade(label='edit',menu=emenu)
menubar.add_cascade(label='about')
baseFrame['menu']=menubar
baseFrame.mainloop()

弹出式菜单

弹出菜单也叫上下文菜单
设置过程:1-建立菜单并向菜单添加各种功能2-监听鼠标右键3-如果点击右键,则根据位置判断弹出4-调用Menu的pop方法
add_separator:添加分隔符

import  tkinter
def makelabel():
    global baseFrame
    tkinter.Label(baseFrame,text='人生苦短,我用python').pack()
baseFrame=tkinter.Tk()

menubar=tkinter.Menu(baseFrame)
for i in ['麻辣香锅','地锅鸡','东坡肘子']:
    menubar.add_separator()
    menubar.add_command(label=i)
menubar.add_command(label='火锅',command=makelabel)
#事件处理函数一定至少有一个参数,且第一个参数表示系统事件
def pop(event):
    menubar.post(event.x_root,event.y_root)
baseFrame.bind('<Button-3>',pop)
baseFrame.mainloop()

canvas 画布

在画布上绘制对象那个,通常用create_name,name=对象类型
画布是把一定的组件显示出来
每次使用谁返回一个创建组件的id,同时也可以用tag属性指定其标签
canvas.move():把标签或者id移动到指定的位置

import tkinter
base=tkinter.Tk()

cv=tkinter.Canvas(base,width=300,height=200)
cv.pack()
#代表两个点
#参数的单位是px
cv.create_line(22,22, 190,200)
cv.create_text(30,30, text='harbin')

base.mainloop()
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
# -*- coding: utf-8 -*- # Form implementation generated from reading ui file 'aaa.ui' # # Created by: PyQt5 UI code generator 5.11.3 # # WARNING! All changes made in this file will be lost! import sys, os from PyQt5 import QtCore, QtWidgets, QtGui from PyQt5.QtCore import * from PyQt5.QtWidgets import * from PyQt5.QtGui import * from PyQt5 import QtCore, QtGui, QtWidgets class U_MainWindow(object): def setupUi(self, MainWindow): MainWindow.setObjectName("MainWindow") MainWindow.resize(1204, 836) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(MainWindow.sizePolicy().hasHeightForWidth()) MainWindow.setSizePolicy(sizePolicy) self.centralwidget = QtWidgets.QWidget(MainWindow) self.centralwidget.setObjectName("centralwidget") self.tableWidget = QtWidgets.QTableWidget(self.centralwidget) self.tableWidget.setGeometry(QtCore.QRect(80, 240, 1041, 371)) self.tableWidget.setAutoScrollMargin(9) self.tableWidget.setRowCount(9) self.tableWidget.setColumnCount(8) self.tableWidget.setObjectName("tableWidget") item = QtWidgets.QTableWidgetItem() self.tableWidget.setVerticalHeaderItem(0, item) item = QtWidgets.QTableWidgetItem() self.tableWidget.setVerticalHeaderItem(1, item) item = QtWidgets.QTableWidgetItem() self.tableWidget.setVerticalHeaderItem(2, item) item = QtWidgets.QTableWidgetItem() self.tableWidget.setVerticalHeaderItem(3, item) item = QtWidgets.QTableWidgetItem() self.tableWidget.setVerticalHeaderItem(4, item) item = QtWidgets.QTableWidgetItem() self.tableWidget.setVerticalHeaderItem(5, item) item = QtWidgets.QTableWidgetItem() self.tableWidget.setVerticalHeaderItem(6, item) item = Q
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值