精华内容
下载资源
问答
  • sys.stderr # 重定向 sys.stdout = self sys.stderr = self def write(self, info): # info信息即标准输出sys.stdout和sys.stderr接收到的输出信息 t.insert('end', info) # 在多行文本控件最后一行插入print信息 t....

    关于重定向的知识可以参考这篇Python标准输出重定向

    程序入口
    0927.py

    import sys
    import tkinter
    from func import demo0929
    
    
    class myStdout():	# 重定向类
        def __init__(self):
        	# 将其备份
            self.stdoutbak = sys.stdout		
            self.stderrbak = sys.stderr
            # 重定向
            sys.stdout = self
            sys.stderr = self
    
        def write(self, info):
            # info信息即标准输出sys.stdout和sys.stderr接收到的输出信息
            t.insert('end', info)	# 在多行文本控件最后一行插入print信息
            t.update()	# 更新显示的文本,不加这句插入的信息无法显示
            t.see(tkinter.END)	# 始终显示最后一行,不加这句,当文本溢出控件最后一行时,不会自动显示最后一行
    
        def restoreStd(self):
            # 恢复标准输出
            sys.stdout = self.stdoutbak
            sys.stderr = self.stderrbak
            
    
    def btn_func():
    	"""按键的触发事件"""
        demo0929.func()
    
    
    mystd = myStdout()	# 实例化重定向类
    window = tkinter.Tk()	# 实例化tk对象
    t = tkinter.Text(window)	# 创建多行文本控件
    t.pack()	# 布局在窗体上
    
    b = tkinter.Button(window, text='start', command=btn_func)	# 创建按钮控件,并绑定触发事件
    b.pack()	# 布局在窗体上
    
    
    window.mainloop()	# 显示窗体
    mystd.restoreStd()	# 恢复标准输出
    
    

    按键触发事件
    每隔一秒打印一个数字。
    demo0929.py

    import time
    
    def func():
        for i in range(5):
            print(i)
            # t.insert('end', i)
            time.sleep(1)
    

    效果如图
    在这里插入图片描述

    展开全文
  • 与UITextField控件相比,UITextView继承自UIScrollView:UIView类,它不仅可以输入并显示文本,而且可以在固定的区域展示足够多的文本,并且这些文本内容可以换行显示。 UITextField控件不能换行。  1 #import...

    与UITextField控件相比,UITextView继承自UIScrollView:UIView类,它不仅可以输入并显示文本,而且可以在固定的区域展示足够多的文本,并且这些文本内容可以换行显示。

    UITextField控件不能换行。

     1  #import "ViewController.h"

     2  @interface ViewController ()

     3  - (IBAction)login:(id)sender;//用于声明UIButton按钮的点击事件

     4  // 用于声明两个UITextField控件所对应的属性

     5  @property (weak, nonatomic)IBOutlet UITextField *password;

     6  @property (weak, nonatomic) IBOutletUITextField *username;

     7  @end

     8  @implementation ViewController

     9  - (void)viewDidLoad {

     10     [super viewDidLoad];

     11 }

     12 - (IBAction)login:(id)sender {

     13     // 获取用户名

     14     NSString *username=self.username.text;

     15     // 获取密码

     16     NSString *password=self.password.text;

     17     // 判断用户名和密码是否正确

     18     if ([username isEqualToString:@""]||[passwordisEqualToString:@""]) {

     19         [self showMessage:@"用户名或密码不能为空"];

     20     }else if(![password isEqualToString:@"12345"]||

     21                ![username isEqualToString:@"itcast"]){

     22         [self showMessage:@"用户名或密码错误"];

     23     }else if([username isEqualToString:@"itcast"]&&

     24                [password isEqualToString:@"12345"]){

     25        [self showMessage:@"登录成功"];

     26     }

     27 }

     28 // 提示信息的方法

     29 -(void)showMessage:(NSString *)message{

     30     UIAlertView *alert=[[UIAlertView alloc] initWithTitle:nilmessage:

     31                        message delegate:nil cancelButtonTitle:@"确定"

     32                        otherButtonTitles:nil,nil];

     33     [alert show];

     34 }

     35 @end



    表2-1  UITextView的常见属性

    属性声明

    功能描述

    @property(nonatomic,assign) id<UITextViewDelegate> delegate;

    设置代理

    @property(nonatomic,getter=isEditable) BOOL editable;

    设置文本视图是否可编辑

    @property(nonatomic,getter=isSelectable) BOOL selectable;

    设置文本视图是否可选择

    @property(nonatomic) BOOL clearsOnInsertion;

    设置文本视图输入时是否清除之前的文本

    @property(nonatomic,copy) NSAttributedString *attributedText;

    设置文本视图默认插入的文字内容

    @property (readwrite, retain) UIView *inputView;

    设置底部弹出的视图

    @property (readwrite, retain) UIView *inputAccessoryView;

    设置底部弹出视图上方的辅助视图

    @property(nonatomic) UIViewAutoresizing autoresizingMask;

    设置文本视图自动适应高度

    @protocol UITextViewDelegate<NSObject, UIScrollViewDelegate>

    @optional

    // 用户将要开始编辑UITextView的内容时会激发该方法

    -(BOOL)textViewShouldBeginEditing:(UITextView *)textView;

    // 用户开始编辑该UITextView的内容时会激发该方法

    -(void)textViewDidBeginEditing:(UITextView *)textView;

    // 用户将要结束编辑该UITextView的内容时会激发该方法

    -(BOOL)textViewShouldEndEditing:(UITextView *)textView;

    // 用户结束编辑该UITextView的内容时会激发该方法

    -(void)textViewDidEndEditing:(UITextView *)textView;

    // 该UITextView内指定范围内的文本内容将要被替换时激发该方法

    -(BOOL)textView:(UITextView *)textView

    shouldChangeTextInRange:(NSRange)rangereplacementText:(NSString *)text;

    // 该UITextView中包含的文本内容发生改变时会激发该方法

    -(void)textViewDidChange:(UITextView *)textView;

    // 用户选中该UITextView内某些文本时会激发该方法

    -(void)textViewDidChangeSelection:(UITextView *)textView;

    @end

    从上述代码中可以看出,UITextViewDelegate协议中定义了很多方法,这些方法会在不同的状态下被激发。例如textView:shouldChangeTextInRange方法是替换多行文本控件中指定文本时会触发的方法,该方法可以实现把回车键当做退出键盘的响应键。



    展开全文
  • 如题 我想做个笔记本 输入文本的部分如何做成多行 且可以自动换行的文本输入区域?
  • 如图,用CRichEditCtrl控件输出多行文本,第一行移上去了,怎么才能移动到第一行,使第一行可见, 我是在对话框初始化的时候设置的文本,并且该窗口初始化完成后是隐藏的,, 第一次显示这个窗口的时候,第一行文本移动到...
  • 文本框控件UITextFieldUITextField在头文件中的定义为@interface UITextField : UIControl , NSCoding>。 UITextField继承了 UIControl 控件,因此它可作为活动控件使用。添加方式可以在界面设计文件中添加,也可以在...

    文本框控件UITextField

    UITextField在头文件中的定义为@interface UITextField : UIControl <UITextInput, NSCoding>
    UITextField继承了 UIControl 控件,因此它可作为活动控件使用。添加方式可以在界面设计文件中添加,也可以在代码中添加,本质一样。

    Xcode 中UITextField属性控制面板:

    这里写图片描述
    属性捡要说明:
    1. placeholder:用于显示灰色的提示信息。
    2. capitaliization:——是否自动转换该文本框中输入文本的大小写;
    3. correction:是否对文本自动更正;
    4. keyboard:——键盘类型的选择,支持的类型有:

    • default:默认的虚拟键盘;
    • ASCII capable:显示英文字母键盘。
    • number and punctuation:显示数字和标点符号键盘;
    • number pad:显示数字键盘;
    • phone pad: 显示电话拨号键盘;
    • E-mail address:显示输入E-mail 地址的虚拟键盘;
    • decimal pad: 显示可输入数字和小数点的虚拟键盘。

    -
    5. return—key: 设置用户在文本框内按下return 键后的行为。

    这里写图片描述
    return—key 列表框下的2个复选框:
    - auto-enable return key: 勾选后return 键默认禁用——当用户在输入内容后,return 键才会变得可用。通过这种方式强制用户输入内容;
    - secure:密码安全遮掩。输入的内容会变为黑点;
    示例图片:

    这里写图片描述

    这里写图片描述

    多行文本控件——UITextView

    UITextView在头文件中,@interface UITextView : UIScrollView <UITextInput>
    UITextView继承了UIScrollView与 UIView(UIScrollView的父类)——所以默认有滚动条。通过代码或 interface builder 都能添加该控件。

    UITextView与UITextField的区别:

    UITextView与UITextField大部分都是相似的,这里只总结它们的区别:

    1. UITextView 为多行文本框;UITextField为单行文本框;
    2. UITextView没有继承 UIControl 控件——因此不能为该控件的事件绑定IBAction事件处理方法,也不能调用 UIControl 提供的addTarget:<#(nullable id)#> action:<#(nonnull SEL)#> forControlEvents:<#(UIControlEvents)#>方法来绑定事件处理方法。
    3. UITextView继承了UIScrollView,具有UIScrollView的功能和行为。

    UIScrollView支持的属性

    简单说下UIScrollView,UIScrollView代表一个可滚动控件——允许用户拖动手指滚动该控件的内容,该内容可以显示多于一个屏幕的内容。

    UIScrollView默认实现并处理放大或缩小手势。——UIScrollView及其子类默认可以通过手指捏合动作进行放大,缩小。

    UIScrollView支持3个控制显示区域的属性

    1. contentSize: 是一个 CGSize(结构体) 的值,其中有2个成员变量,用于代表UIScrollView所需要显示内容的完整宽度和完整高度;
    2. contentInset: 是一个 UIEdageInsets(结构体)的值,有4个成员变量,代表UIScrollView所需显示内容在上,下,左,右的留白。
    3. contentOffset:CGSize类型的值,包含 x,y2个成员变量。
      下图可帮助理解contentOffset,它是个坐标点。
      这里写图片描述

    如果还不明白,可以参考这篇博文:contentInset 和 contentOffset和frame 之间的含义 让我们彻底搞懂!或者下面的知识扩充。

    知识扩充:
    contentSize、contentInset和contentOffset 是 scrollView三个基本的属性。
    contentSize: The size of the content view. 其实就是scrollview可以滚动的区域,比如frame = (0 ,0 ,320 ,480) contentSize = (320 ,960),代表你的scrollview可以上下滚动,滚动区域为frame大小的两倍。

    contentOffset:The point at which the origin of the content view is offset from the origin of the scroll view. 是scrollview当前显示区域顶点相对于frame顶点的偏移量,比如上个例子你拉到最下面,contentoffset就是(0 ,480),也就是y偏移了480

    contentInset:The distance that the content view is inset from the enclosing scroll view.是scrollview的contentview的顶点相对于scrollview的位置,例如你的contentInset = (0 ,100),那么你的contentview就是从scrollview的(0 ,100)开始显示

    示例代码——上拉刷新一般实现代码:

    /* 上拉刷新一般实现代码如下 */
        //上拉加载更多  
        - (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate{  
    
            [_refreshHeaderView egoRefreshScrollViewDidEndDragging:scrollView];  
            float offset=scrollView.contentOffset.y;  
            float contentHeight=scrollView.contentSize.height;  
            float sub=contentHeight-offset;  
            if ((scrollView.height-sub)>20) {
            //如果上拉距离超过20p,则加载更多数据  
                //[self loadMoreData];//此处在view底部加载更多数据  
            }  
        }  

    看 Xcode属性面板。

    这里写图片描述
    补充图片中的内容:
    - delays content touches: 如果勾选,该UIScrollView将延迟到真正确定滚动意图才去处理触碰手势。——如果未勾选,只要用户触碰该控件,该UIScrollView立即调用touchesShouldBegin: withEvent:inContentView 方法处理滚动。
    - ⭐️ cancellable content touches:如果勾选,如果该UIScrollView中的内容已经跟踪用户手指触碰动作,并且用户拖动手指足以启动一个滚动事件——该UIScrollView将会调用touchesCancelled:withEvent:方法,并将该拖动事件当做滚动UIScrollView控件。如果不勾选,——只要控件的内容追踪用户手指触碰动作,将不会理会手指在该控件上的其他移动。通常建议勾选。

    UITextView事件怎么处理?——可以使用委托对象处理

    UITextView没有继承 UIControl 类——所以不支持绑定 IBAction 事件处理方法。
    使用委托对象这种方法处理UITextView事件,UITextView必须实现UITextViewDelegate 协议。该协议中定义了如下方法:
    1. - (BOOL)textViewShouldBeginEditing:(UITextView *)textView;——将要开始编辑该UITextView内容的时候自动激发该方法;
    2. - (BOOL)textViewShouldEndEditing:(UITextView *)textView;——将要结束编辑该UITextView内容的时候自动激发该方法;
    3. - (void)textViewDidBeginEditing:(UITextView *)textView;——开始编辑时激发该方法;
    4. - (void)textViewDidEndEditing:(UITextView *)textView;——结束编辑时激发该方法;
    5. - (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text;该UITextView内指定范围内的文本内容将要被替换时激发该方法;
    6. - (void)textViewDidChange:(UITextView *)textView;UITextView包含的文本内容改变时激发该方法;
    7. - (void)textViewDidChangeSelection:(UITextView *)textView;选中该UITextView控件中某些文本时会激发该方法;
    8. - (BOOL)textView:(UITextView *)textView shouldInteractWithURL:(NSURL *)URL inRange:(NSRange)characterRange NS_AVAILABLE_IOS(7_0);textView指定范围的内容与 URL 将要相互作用时激发该方法——该方法随着 IOS7被使用;
    9. - (BOOL)textView:(UITextView *)textView shouldInteractWithTextAttachment:(NSTextAttachment *)textAttachment inRange:(NSRange)characterRange NS_AVAILABLE_IOS(7_0);textView指定范围的内容与文本附件将要相互作用时,自动激发该方法——该方法随着 IOS7被使用;

    自定义选择内容后的菜单

    效果图:

    这里写图片描述
    实现部分代码:

    #import "FKViewController.h"
    
    @interface FKViewController ()
    
    @end
    
    @implementation FKViewController
    - (void)viewDidLoad
    {
        [super viewDidLoad];
        // 创建两个菜单项
        UIMenuItem *mailShare = [[UIMenuItem alloc]initWithTitle:@"邮件分享"
            action:@selector(mailShare:)];
        UIMenuItem *weiboShare = [[UIMenuItem alloc]initWithTitle:@"微博分享"
            action:@selector(weiboShare:)];
        // 创建UIMenuController控制器
        UIMenuController *menu = [UIMenuController sharedMenuController];
        // 为UIMenuController控制器添加两个菜单项
        [menu setMenuItems:[NSArray arrayWithObjects:
            mailShare , weiboShare , nil]];
    }
    - (void)didReceiveMemoryWarning
    {
        [super didReceiveMemoryWarning];
    }
    // 重写UIResponder的canPerformAction: withSender:方法
    // 当该方法返回YES时,该界面将会显示该Action对应的控件
    -(BOOL)canPerformAction:(SEL)action withSender:(id)sender
    {
        // 如果Action是mailShare:或weiboShare:方法
        if(action == @selector(mailShare:)
           || action == @selector(weiboShare:))
        {
            // 如果textView选中的内容长度大于0,返回YES。
            // 当该方法返回YES时,该Action对应的控件将会显示出来。
            if(self.textView.selectedRange.length > 0)
                return YES;
        }
        return NO; 
    }
    - (void) mailShare:(id)sender
    {
        NSLog(@"模拟通过邮件分享!");
    }
    - (void) weiboShare:(id)sender
    {
        NSLog(@"模拟通过微博分享!");
    }
    @end

    代码说明:
    为 UIMenuController添加2个菜单项。然后再重写重写UIResponder的canPerformAction: withSender:方法——判断当激发的 Action 是mailShare:或weiboShare:,并且选中的文本长度大于0,那么该方法返回 YES,应用程序显示这个菜单项。

    完成输入后如何关闭键盘?

    请参见我的另一篇总结:IOS开发——隐藏键盘的4种方法
    除了上面这篇文章提到的4种方法,还有一种方法:自定义键盘附件关闭键盘。就像下面的效果图那样关闭键盘。这里的示例勾选了水平回弹和垂直回弹的属性。源码地址:自定义键盘附件关闭键盘(源码)

    这里写图片描述
    源码地址:自定义键盘附件关闭键盘(源码)
    核心代码段:

    @implementation FKViewController
    
    - (void)viewDidLoad
    {
        [super viewDidLoad];
        // 创建一个UIToolBar工具条
        UIToolbar * topView = [[UIToolbar alloc]
            initWithFrame:CGRectMake(0, 0, 320, 30)];
        // 设置工具条风格
        [topView setBarStyle:UIBarStyleDefault];
        // 为工具条创建第1个“按钮”
        UIBarButtonItem* myBn = [[UIBarButtonItem alloc]
            initWithTitle:@"无动作"
            style:UIBarButtonItemStyleBordered
            target:self action:nil];
        // 为工具条创建第2个“按钮”,该按钮只是一片可伸缩的空白区。
        UIBarButtonItem* spaceBn = [[UIBarButtonItem alloc]
            initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace
            target:self action:nil];
        // 为工具条创建第3个“按钮”,单击该按钮会激发editFinish方法
        UIBarButtonItem* doneBn = [[UIBarButtonItem alloc]
            initWithTitle:@"完成"
            style:UIBarButtonItemStyleDone
            target:self action:@selector(editFinish)];
        // 以3个按钮创建NSArray集合
        NSArray * buttonsArray = [NSArray arrayWithObjects
            :myBn,spaceBn,doneBn,nil];
        // 为UIToolBar设置按钮
        [topView setItems:buttonsArray];
        // 为textView关联的虚拟键盘设置附件
        [self.textView setInputAccessoryView:topView];
    }
    -(void) editFinish
    {
        [self.textView resignFirstResponder];
    }
    @end
    展开全文
  • CSS - 多行文本超出控件宽度部分显示为省略号

    CSS - 多行文本超出控件宽度部分显示为省略号

    		.d1{
    			width: 20em;
    			height: 4.25em;
    			line-height: 1.5em;
    			padding: .5em;
    			border: 1px solid #ccc;
    			word-break: break-all;
    			/*核心代码*/
    			display: -webkit-box;
    			-webkit-box-orient: vertical;
    			-webkit-line-clamp: 3;
    			overflow: hidden;
    		}
    

    分别在Chrome、Firefox、ie上的效果,未兼容ie
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    展开全文
  • qml Text控件专门用于显示...改变多行文本,需要修改wrapMode: Text.WrapAnywhere,elide: Text.ElideRight,maximumLineCount:2即可 1 import QtQuick 2.9 2 import QtQuick.Window 2.2 3 4 Window { ...
  • 本文我们将讲解一个使用的多行文本显示控件,在实际开发过程中我们时常会遇到这种需求:有两个TextView控件分行显示,当第一个TextView的内容过多一行显示不下时,我们需要将第二个TextView在第一个TextView的第二行...
  • QTextEdit类是一个多行文本框控件,可以显示多行文本内容,当文本内容超出控件显示范围时,可以显示水平个垂直滚动条,Qtextedit不仅可以用来显示文本还可以用来显示HTML文档 QTextEdit类中常用的方法 方法 描述 ...
  • 在wm开发中Button控件并不支持多行文本的显示。所以要实现多行文本的效果只能使用Win32 API public class MultilineButton:Button { bool multiLine = true; public bool MultiLine { get
  • 怎么样在listview控件中使用多行文本框控件?文本框控件提交以后怎么对文本换行?
  • 当光标移至某控件时,能显示多行文本,它不受VB控件中属性设置的的限制!
  • PyQt5多行文本框控件QTextEdit简介QTextEdit类是一个多行文本框控件,可以显示多行文本内容,当文本内容超出控件显示范围时,可以显示水平个垂直滚动条,Qtextedit不仅可以用来显示文本还可以用来显示HTML文档...
  • 1,多行文本控件的创建 1 2 3 4 let textview=UITextView(frame:CGRectMake(10,100,200,100)) textview.layer.borderWidth=1 //边框粗细 textview...
  • 单行编辑控件不能有多行文本 matlab

    千次阅读 2018-03-07 11:20:28
    单行编辑控件不能有多行文本 matlab 解决方法:双击进入控件,把max参数改2以及以上
  • pb多行编辑控件显示文本时不换行

    千次阅读 2014-05-15 10:02:30
    把mle_1的autoh和autov都去掉,点上vscroll,让它强制出现竖滚动条
  • PyQt5多行文本框控件QTextEdit简介QTextEdit类是一个多行文本框控件,可以显示多行文本内容,当文本内容超出控件显示范围时,可以显示水平个垂直滚动条,Qtextedit不仅可以用来显示文本还可以用来显示HTML文档...
  • 代替,如果想启用多行文本,请使用以下代码。我是在MainBoardStroy中添加UISegmentedControl控件的,因此在对应的controller的viewDidLoad方法中添加如下代码: for(UIView *subview in segmentedControl.subviews)...
  • WPF 创建多行 TextBox 控件

    千次阅读 2013-12-26 13:21:22
    本示例演示如何使用可扩展应用程序标记语言 (XAML) 定义一个 TextBox 控件,该控件将自动扩展以容纳多行文本。 示例 将 TextWrapping 特性设置为 Wrap 会导致输入的文本在到达 TextBox 控件的...
  • 1,多行文本控件的创建 1 2 3 4 let textview = UITextView(frame:CGRect(x:10, y:100, width:200, height:100)) textview.layer.borderWidth = 1 //边框粗细 textview.layer.borderColor = UIColor....

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 29,514
精华内容 11,805
关键字:

多行文本控件