为了解决 sublime text 下 python 的 raw_input() 函数无法起效,便萌生了个用 GUI 窗口来获取输入的想法,一开始想用 Tkinter,后来想了下还是用 PyQt 吧,一来代码量差不到哪里去,二来 Qt 显然更美观一些。封装成一个模块 Input.py:

#!/usr/bin/env python
#-*- coding: utf-8 -*- def getInput(label_str=None):
'''Return the utf-8 string of text that you write in the lineEdit.
label_str: the string as the prompt of the label in the dialog.'''
from PyQt4 import QtGui, QtCore
import sys if label_str == None:
label_str = u'窗口以Unicode编码返回你所输入的信息:'
else:
label_str = unicode(label_str) class MyWindow(QtGui.QDialog): input_str = '' def __init__(self):
QtGui.QDialog.__init__(self)
self.setWindowTitle(u'GUI Input') self.label = QtGui.QLabel(label_str)
self.lineEdit = QtGui.QLineEdit() self.ok = QtGui.QPushButton(u'确定')
self.connect(self.ok, QtCore.SIGNAL('clicked()'), self.getLine) self.clean = QtGui.QPushButton(u'清空')
self.connect(self.clean, QtCore.SIGNAL('clicked()'), self.cleaning) self.cancel = QtGui.QPushButton(u'取消')
self.connect(self.cancel, QtCore.SIGNAL('clicked()'), self.quit) layout = QtGui.QGridLayout()
layout.addWidget(self.label, 0, 0, 1, 4)
layout.addWidget(self.lineEdit, 1, 0, 1, 4)
layout.addWidget(self.ok, 2, 1, 1, 1)
layout.addWidget(self.clean, 2, 2, 1, 1)
layout.addWidget(self.cancel, 2, 3, 1, 1)
self.setLayout(layout) MyWindow.input_str = '' def getLine(self):
MyWindow.input_str = str(self.lineEdit.text().toUtf8())
self.close() def cleaning(self):
self.lineEdit.setText('') def quit(self):
MyWindow.input_str = ''
self.close() app = QtGui.QApplication(sys.argv)
win = MyWindow()
win.show()
app.exec_()
return MyWindow.input_str if __name__ == '__main__':
pre_str = getInput()
now_str = pre_str.decode('utf-8')
print type(pre_str), type(now_str)
print pre_str
# print long(pre_str)
# fp = open(now_str + '.txt', 'wb+')
# fp.close()

  使用时只需要 import Input,然后使用 Input.getInput('xxx') 就行了,试了下还是能支持中文的,只需要安装 PyQt4 或者 PyQt5 模块就行了。效果如下:

  

  在输入框输入任何字符串后按确定就可以返回 Unicode 编码的 string,在 sublime text 下用 python 开发调试时就再也不用担心如何方便地进行输入的问题了。

python GUI输入窗口的更多相关文章

  1. Python GUI之tkinter窗口视窗教程大集合(看这篇就够了) JAVA日志的前世今生 .NET MVC采用SignalR更新在线用户数 C#多线程编程系列(五)- 使用任务并行库 C#多线程编程系列(三)- 线程同步 C#多线程编程系列(二)- 线程基础 C#多线程编程系列(一)- 简介

    Python GUI之tkinter窗口视窗教程大集合(看这篇就够了) 一.前言 由于本篇文章较长,所以下面给出内容目录方便跳转阅读,当然也可以用博客页面最右侧的文章目录导航栏进行跳转查阅. 一.前言 ...

  2. 转载:python原生态的输入窗口抖动+输入特效

    python原生态的输入窗口抖动+输入特效 出处:https://coding.net/u/acee/p/PythonPowerInput/git/blob/master/test_power_inp ...

  3. python GUI初步

  4. 使用PyQt来编写第一个Python GUI程序

    原文:使用PyQt来编写第一个Python GUI程序 本文由 伯乐在线 - Lane 翻译,Daetalus 校稿.未经许可,禁止转载!英文出处:pythonforengineers.com.欢迎加 ...

  5. python GUI图形化编程-----wxpython

    一.python gui(图形化)模块介绍: Tkinter :是python最简单的图形化模块,总共只有14种组建 Pyqt     :是python最复杂也是使用最广泛的图形化 Wx       ...

  6. Python GUI 编程

    Python GUI编程(Tkinter) Python 提供了多个图形开发界面的库,几个常用 Python GUI 库如下: Tkinter: Tkinter 模块(Tk 接口)是 Python 的 ...

  7. Python GUI编程(Tkinter) windows界面开发

    Python实现GUI简单的来说可以调用Tkinter库,这样一般的需求都可以实现,显示简单的windows窗口代码如下: python_gui.py 1 #!C:\Python27\python.e ...

  8. python GUI尝鲜(但当涉猎,见往事耳)

    第一步:简单的窗口和内容 import tkinter as tk window = tk.Tk() # 窗口obj对象 window.title('my TK') # 窗口名字 window.geo ...

  9. Python GUI编程(Tkinter)(一)

    tk官网的教程学习: https://tkdocs.com/tutorial/firstexample.html 学习blog: https://www.cnblogs.com/aland-1415/ ...

随机推荐

  1. meta 标签的作用

    META标签,是HTML语言HEAD区的一个辅助性标签.在几乎所有的page里,我们都可以看到类似下面这段htm l代码: <head> <meta http-equiv=" ...

  2. 3.MongoDB下Windows下的安装

    由于博主目前使用的是Windows的系统,没有使用Linux等其它的系统,因此此安装配置和开发使用,均是在Windows下进行的,以后在使用其它的系统的时候,再将其它系统的配置的使用补充上来. 1.下 ...

  3. 【001:go语言的一些语法基础】

    1. 循环语句 Go只有for一个循环语句关键字,但支持3种形式 初始化和步进表达式可以是多个值 条件语句每次循环都会被重新检查,因此不建议在条件语句中 使用函数,尽量提前计算好条件并以变量或常量代替 ...

  4. github 删除仓库 repository

    1.点开想要删除的仓库 2点击setting 3.拉到最下面 4.点击 Delete this repository 5.输入想删除仓库的名字 点击

  5. 01.线性表 ArrayList

    public class MyArrayList { //容量 ; //存放数组元素 private object[] _items; //数组大小 private int _size; //元素个数 ...

  6. python中函数接收多余参数

    代码: def fun(x): return x print fun(10) 函数fun(x)接受参数是x,传入数字"10",打印函数的返回值结果 就是10,如果我传递多个参数时, ...

  7. js禁止Backspace键使浏览器后退

    在项目中遇到按下Backspace键让浏览器后退的问题,上网搜了几种解决方案都不太理想.于是集众人之智,采众家之长,归纳如下: 这里主要参考博客http://q821424508.iteye.com/ ...

  8. unity3d随机地牢生成代码

    现在也是处于失业状态,碰巧看到个面试题是要用unity生成个随机地牢,就把做题过程中的思路和代码记录一下吧. 做完了以后我又想了一下,发现其实根本不需要这么麻烦,果然demo里的代码对我的思路影响还是 ...

  9. Linux定时任务Crontab学习笔记

    crond是linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程,与windows下的计划任务类似,当安装完成操作系统后,默认会安装此服务工具,并且会自动启动crond进程,crond ...

  10. EF的性能改善和思考

    EF是个工具,用的好了性能就会很好,用的不好性能就会有很大损失. 先从EF的设计思想来讲解 EF的初衷是根据缓存中的实体对象,以及实体对象的状态(删除.更新.添加)来对数据库进行操作,这些实体对象.以 ...