PyQt基本操作

PyQt基本操作

PyQt的简介和基本安装方法读者可以自行google解决。先声明,本文章教基础,参考《征服Python》相关章节。不过不得不说,pyQt的教程真的好少,╮(╯▽╰)╭,悲催,大家有什么好的资料推荐一下,谢谢了。

先建立一个基本的界面看看:

?
1
2
3
4
5
6
7
8
9
10
11
12
import  sys
from  PyQt4 import   QtCore, QtGui
class  MyWindow( QtGui.QMainWindow ):
     def  __init__( self  ):
         QtGui.QMainWindow.__init__( self  )
         self .setWindowTitle( "PyQt"  )
         self .resize( 300 , 200  )
app =  QtGui.QApplication( sys.argv )
mywindow =  MyWindow()
mywindow.show()
app.exec_()
    

 运行结果:

然后我们添加一个标签:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#coding=utf-8
#标签的使用
import  sys
from  PyQt4 import  QtCore, QtGui
class  Window( QtGui.QMainWindow ):
     def  __init__( self  ):
         super ( Window, self  ).__init__()
         self .setWindowTitle( "hello"  )
         self .resize( 200 , 300  )
         #添加标签
         label =  QtGui.QLabel( "label"  )
         label.setAlignment( QtCore.Qt.AlignCenter )
         self .setCentralWidget( label )
app =  QtGui.QApplication( sys.argv )
demo =  Window()
demo.show()
app.exec_()

 效果如下:

基本布局:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#coding=gbk
import  sys
from  PyQt4 import  QtCore, QtGui
class  Window( QtGui.QWidget ):
     def  __init__( self  ):
         super ( Window, self  ).__init__()
         self .setWindowTitle( "hello"  )
         self .resize( 500 , 500  )
         
         hBoxLayout1 =  QtGui.QHBoxLayout()
         
         label1 =  QtGui.QLabel( "Label1"  )
         label2 =  QtGui.QLabel( "Label2"  )
         label3 =  QtGui.QLabel( "Label3"  )
         label4 =  QtGui.QLabel( "Label4"  )
         label5 =  QtGui.QLabel( "Label5"  )
         #---------添加表格布局
         gridLayout =  QtGui.QGridLayout()
          
         gridLayout.addWidget( label1 , 0 , 0  )
         gridLayout.addWidget( label2 , 0 , 1  )
         gridLayout.addWidget( label3 , 0 , 2  )
         gridLayout.addWidget( label4 , 1 , 0  )
         gridLayout.addWidget( label5 , 1 , 1  )
          
         self .setLayout( gridLayout )       
#-------添加水平布局
#        hBoxLayout1.addWidget( label1 )
#        hBoxLayout1.addWidget( label2 )
#        hBoxLayout1.addWidget( label3 )
#        hBoxLayout1.addWidget( label4 )
#        hBoxLayout1.addWidget( label5 )
#       
#        self.setLayout( hBoxLayout1 )
 
#---------添加垂直布局
#        vBoxLayout = QtGui.QVBoxLayout()
#        vBoxLayout.addWidget( label1 )
#        vBoxLayout.addWidget( label2 )
#        vBoxLayout.addWidget( label3 )
#        vBoxLayout.addWidget( label4 )
#        vBoxLayout.addWidget( label5 )
#       
#        self.setLayout( vBoxLayout )
#       
 
 
app =  QtGui.QApplication( sys.argv )
demo =  Window()
demo.show()
app.exec_()

 效果:

按钮基本使用

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#coding=utf-8
#按钮操作
 
import  sys
from  PyQt4 import  QtGui, QtCore
class  Window( QtGui.QWidget ):
     def  __init__( self  ):
         super ( Window, self  ).__init__()
         self .setWindowTitle( "hello"  )
         self .resize( 500 , 500  )
         gridlayout =  QtGui.QGridLayout()
         
         button1 =  QtGui.QPushButton( "button1"  )
         gridlayout.addWidget( button1, 0 , 0 , 1 , 3  )
         
         button2 =  QtGui.QPushButton( "button2"  )
         button2.setFlat( True  )
         gridlayout.addWidget( button2, 1 , 1 , 1 , 3  )
         self .setLayout( gridlayout )
app =  QtGui.QApplication( sys.argv )
demo =  Window()
demo.show()
app.exec_()

 

不过按钮2当你点击的时候才显示出来哦

现在看看单行文本和多行文本

?
#coding=utf-8
import  sys
from  PyQt4 import  QtGui, QtCore
class  Window( QtGui.QWidget ):
     def  __init__( self  ):
         super ( Window, self  ).__init__()
         self .setWindowTitle( "hello"  )
         self .resize( 500 , 500  )
         
         gridlayout =  QtGui.QGridLayout()
         
         str  =  "hello"   #这里中文乱码,纠结
         label =  QtGui.QLabel( str  )
         label.setAlignment( QtCore.Qt.AlignCenter )
         
         textFile =  QtGui.QLineEdit()
         gridlayout.addWidget( label, 0 , 0  )
         gridlayout.addWidget( textFile )
         
         passwordFile =  QtGui.QLineEdit()
         passwordFile.setEchoMode( QtGui.QLineEdit.Password )
         gridlayout.addWidget( passwordFile )
         
         textArea =  QtGui.QTextEdit()
         textArea.setText( "asdasda"  )
         gridlayout.addWidget( textArea )
         
         
         self .setLayout( gridlayout )
app =  QtGui.QApplication( sys.argv )
window =  Window()
window.show()
app.exec_()

 

单选和复选框

?
import  sys
from  PyQt4 import  QtGui, QtCore
class  Window( QtGui.QWidget ):
     def  __init__( self  ):
         super ( Window, self  ).__init__()
         self .setWindowTitle( "hello"  )
         self .resize( 500 , 500  )
         hboxlayout =  QtGui.QHBoxLayout()
         
         self .radio1 =  QtGui.QRadioButton( "radio1"  )
         self .radio2 =  QtGui.QRadioButton( "radio2"  )
         self .radio3 =  QtGui.QRadioButton( "radio3"  )
         self .radio1.setChecked( True  )
         
         hboxlayout.addWidget( self .radio1 )
         hboxlayout.addWidget( self .radio2 )
         hboxlayout.addWidget( self .radio3 )
         
         checkbox1 =  QtGui.QCheckBox( "checkbox1"  )
         checkbox2 =  QtGui.QCheckBox( "checkbox2"  )
         checkbox3 =  QtGui.QCheckBox( "checkbox3"  )
         checkbox1.setChecked( True  )
         
         hboxlayout.addWidget( checkbox1 )
         hboxlayout.addWidget( checkbox2 )
         hboxlayout.addWidget( checkbox3 )
 
         self .button =  QtGui.QPushButton( "Ok"  )
         hboxlayout.addWidget( self .button )
         
         self .connect( self .button, QtCore.SIGNAL( 'clicked()'  ), self .OnButton )
         
         self .setLayout( hboxlayout )
     def  OnButton( self  ):
         if  self .radio2.isChecked():
             self .radio2.setText( "haha"  )
         
app =  QtGui.QApplication( sys.argv )
win =  Window()
win.show()
app.exec_()

 

现在看看菜单:

?
#coding=utf-8
#菜单事件
import  sys
from  PyQt4 import  QtGui, QtCore
class  Window( QtGui.QMainWindow ):
     def  __init__( self  ):
         super ( Window, self  ).__init__()
         self .setWindowTitle( "hello"  )
         self .resize( 500 , 500  )
         
         
         
         menubar =  self .menuBar()
         self . file  =  menubar.addMenu( '&File'  )
         open  =  self . file .addAction( 'Open'  )
         self .connect( open , QtCore.SIGNAL( 'triggered()'  ), self .OnOpen )
         
         save =  self . file .addAction( 'Save'  )
         self .connect( save, QtCore.SIGNAL( 'triggered()'  ), self .OnSave )
         self . file .addSeparator()
         close =  self . file .addAction( "Close"  )
         self .connect( close, QtCore.SIGNAL( 'triggered()'  ), self .OnClose )
         
         self .label =  QtGui.QLabel( "this is a  google test"  )
         self .label.setAlignment( QtCore.Qt.AlignCenter )
         self .setCentralWidget( self .label )
         
     def  OnOpen( self  ):
         self .label.setText( "open"  )
     def  OnSave( self  ):
         self .label.setText( "save"  )
     def  OnClose( self  ):
         self .close()
     def  contextMenuEvent( self , event ):
        self . file .exec_( event.globalPos() )
app =  QtGui.QApplication( sys.argv )
win =  Window()
win.show()
app.exec_()

 

点击右键也可以看看哦

现在是对话框的代码:

?
#coding=utf-8
#对话框
import  sys
from  PyQt4 import  QtGui, QtCore
class  Window( QtGui.QWidget ):
     def  __init__( self  ):
         super ( Window, self  ).__init__()
         self .setWindowTitle( "hello"  )
         self .resize( 500 , 500  )
         
         gridlayout =  QtGui.QGridLayout()
         
         self .AboutButton =  QtGui.QPushButton( "About"  )
         gridlayout.addWidget( self .AboutButton, 0 , 0  )
         self .AboutQtButton =  QtGui.QPushButton( "AboutQt"  )
         gridlayout.addWidget( self .AboutQtButton, 0 , 1  )
         self .CriticalButton =  QtGui.QPushButton( "CriticalButton"  )
         gridlayout.addWidget( self .CriticalButton, 1 , 0  )
         self .InfoButton =  QtGui.QPushButton( "Info"  )
         gridlayout.addWidget( self .InfoButton, 1 , 1  )
         self .QuestionButton =  QtGui.QPushButton( "Question"  )
         gridlayout.addWidget( self .QuestionButton, 2 , 0  )
         self .WarningButton =  QtGui.QPushButton( "Warning"  )
         gridlayout.addWidget( self .WarningButton, 2 , 1  )
         
         spacer =  QtGui.QSpacerItem( 200 , 80  )
         gridlayout.addItem( spacer, 3 , 1 , 1 , 5  )
         self .setLayout( gridlayout )
         
         self .connect( self .AboutButton, QtCore.SIGNAL( 'clicked()'  ), self .OnAboutButton )
         self .connect( self .AboutQtButton, QtCore.SIGNAL( 'clicked()'  ), self .OnAboutQtButton )
         self .connect( self .CriticalButton, QtCore.SIGNAL( 'clicked()'  ), self .OnCriticalButton )
         self .connect( self .InfoButton, QtCore.SIGNAL( 'clicked()'  ), self .OnInfoButton )
         self .connect( self .QuestionButton, QtCore.SIGNAL( 'clicked()'  ), self .OnQuestionButton )
         self .connect( self .WarningButton, QtCore.SIGNAL( 'clicked()'  ), self .OnWarningButton )
         
     def  OnAboutButton( self  ):
         QtGui.QMessageBox.about( self , 'PyQt' , "About"  )
         
     def  OnAboutQtButton( self  ):
         QtGui.QMessageBox.aboutQt( self , "PyQt"  )
         
     def  OnCriticalButton( self  ):
         r =  QtGui.QMessageBox.critical( self , "PyQT" , "CriticalButton" , QtGui.QMessageBox.Abort,
                                    QtGui.QMessageBox.Retry, QtGui.QMessageBox.Ignore )
         if  r = =  QtGui.QMessageBox.Abort:
             self .setWindowTitle( "Abort"  )
         elif  r = =  QtGui.QMessageBox.Retry:
             self .setWindowTitle( "Retry"  )
         elif  r = =  QtGui.QMessageBox.Ignore:
             self .setWindowTitle( "Ignore"  )
         else :
             pass
         
     def  OnInfoButton( self  ):
         QtGui.QMessageBox.information( self , "Pyqt" , "information"  )
         
     def  OnQuestionButton( self  ):
         r =  QtGui.QMessageBox.question( self , "PyQt" , "Question" , QtGui.QMessageBox.Yes, QtGui.QMessageBox.No, QtGui.QMessageBox.Cancel )
         
     def  OnWarningButton( self  ):
         r =  QtGui.QMessageBox.warning( self , "PyQT" , "warning" , QtGui.QMessageBox.Yes, QtGui.QMessageBox.No )
     
         
app =  QtGui.QApplication( sys.argv )
win =  Window()
win.show()
app.exec_()

 

现在是文件选择,字体选择,颜色选择框:

?
#coding=utf-8
import  sys
from  PyQt4 import  QtGui, QtCore
class  Window( QtGui.QWidget ):
     def  __init__( self  ):
         super ( Window, self  ).__init__()
         self .setWindowTitle( "hello"  )
         self .resize( 500 , 500  )
         
         gridlayout =  QtGui.QGridLayout()
         
         self .button1 =  QtGui.QPushButton( "File"  )
         self .button2 =  QtGui.QPushButton( "Font"  )
         self .button3 =  QtGui.QPushButton( "Color"  )
         gridlayout.addWidget( self .button1 )
         gridlayout.addWidget( self .button2 )
         gridlayout.addWidget( self .button3 )
         spacer =  QtGui.QSpacerItem( 200 , 80  )
         gridlayout.addItem( spacer, 3 , 1 , 1 , 3  )
         self .setLayout( gridlayout )
         
         self .connect( self .button1, QtCore.SIGNAL( 'clicked()'  ), self .OnButton1 )
         self .connect( self .button2, QtCore.SIGNAL( 'clicked()'  ), self .OnButton2 )
         self .connect( self .button3, QtCore.SIGNAL( 'clicked()'  ), self .OnButton3 )
         
         
     def  OnButton1( self  ):
         fileName =  QtGui.QFileDialog.getOpenFileName( self , 'Open'  )
         if  not  fileName.isEmpty():
             self .setWindowTitle( fileName )   
         
     def  OnButton2( self  ):
         font, ok =  QtGui.QFontDialog.getFont()
         if  ok:
             self .setWindowTitle( font.key() )
     
     def  OnButton3( self  ):
         color =  QtGui.QColorDialog.getColor()
         if  color.isValid():
             self .setWindowTitle( color.name() )
         
app =  QtGui.QApplication( sys.argv )
win =  Window()
win.show()
app.exec_()

 

现在还是对话框:

?
#coding=utf-8
import  sys
from  PyQt4 import  QtGui, QtCore
 
class  MyDialog( QtGui.QDialog ):
     def  __init__( self  ):
         super ( MyDialog, self  ).__init__()
         
         self .setWindowTitle( "Dialog"  )
         self .gridlayout =  QtGui.QGridLayout()
         
         self .label =  QtGui.QLabel( "Please Input:"  )
         self .textField =  QtGui.QLineEdit()
         self .okButton =  QtGui.QPushButton( "OK"  )
         self .cancalButton =  QtGui.QPushButton( "Cancel"  )
         
         self .gridlayout.addWidget( self .label , 0 , 0  )
         self .gridlayout.addWidget( self .textField , 0 , 1  )
         self .gridlayout.addWidget( self .cancalButton , 0 , 2  )
         self .gridlayout.addWidget( self .okButton , 0 , 3  )
         
         self .connect( self .okButton, QtCore.SIGNAL( 'clicked()'  ), self .OnOk )
         self .connect( self .cancalButton, QtCore.SIGNAL( 'clicked()'  ), self .OnCancel )
         
         self .setLayout( self .gridlayout )
         
     def  OnOk( self  ):
         self .text =  self .textField.text()
         self .done( 1  )
     def  OnCancel( self  ):
         self .done( 0  )
         
 
class  Window( QtGui.QWidget ):
     def  __init__( self  ):
         super ( Window, self  ).__init__()
         self .setWindowTitle( "hello"  )
         self .resize( 400 , 300  )
         
         hboxlayout =  QtGui.QGridLayout()
         self .creatDialogButton =  QtGui.QPushButton( "Create a new Dialog"  )
         hboxlayout.addWidget( self .creatDialogButton )
         self .setLayout( hboxlayout )
         
         self .connect( self .creatDialogButton, QtCore.SIGNAL( 'clicked()'  ), self .OnButton )
         
     def  OnButton( self  ):
         dialog =  MyDialog()
         r =  dialog.exec_()
         if  r:
             self .creatDialogButton.setText( dialog.text )
         
         
app =  QtGui.QApplication( sys.argv )
win =  Window()
win.show()
app.exec_()

 

最后一个是利用Designer写的

利用他设计一个简单的界面,只有一个标签和一个文本框

代码如下:

?
#coding=utf-8
import  sys
from  PyQt4 import  QtGui, QtCore, uic
 
class  MyDialog( QtGui.QDialog ):
     def  __init__( self  ):
         super ( MyDialog, self  ).__init__()
         uic.loadUi( "res.ui" , self  )
 
class  MyWindow( QtGui.QWidget ):
     def  __init__( self  ):
         super ( MyWindow, self  ).__init__()
         self .setWindowTitle( "hello"  )
         self .resize( 300 , 200  )
         
         gridlayout =  QtGui.QGridLayout()
         self .button =  QtGui.QPushButton( "CreateDialog"  )
         gridlayout.addWidget( self .button )
         self .setLayout( gridlayout )
         
         self .connect( self .button, QtCore.SIGNAL( 'clicked()'  ), self .OnButtoN )
         
     def  OnButtoN( self  ):
         dialog =  MyDialog()
         r =  dialog.exec_();
         if  r:
             self .button.setText( dialog.textField.text() )
         
app =  QtGui.QApplication( sys.argv )
demo =  MyWindow()
demo.show()
app.exec_()

 


============================================================================== 我喜欢程序员,他们单纯、固执、容易体会到成就感;面对压力,能够挑灯夜战不眠不休;面对困难,能够迎难而上挑战自我。他们也会感到困惑与傍徨,但每个程序员的心中都有一个比尔盖茨或是乔布斯的梦想“用智慧开创属于自己的事业”。我想说的是,其实我是一个程序员。==============================================================================
联系我:
   
分类:  python(原创)
3
0
(请您对文章做出评价)
« 上一篇: hi,你觉的有必要吗?
» 下一篇: QT小滑块
posted @  2011-11-16 22:27  Rollen Holt 阅读( 6246) 评论( 16编辑  收藏
  
#1楼   2011-11-18 11:02  iTech   
  
#2楼 [ 楼主2011-11-18 12:26  Rollen Holt   
@iTech
xiexie
  
#3楼   2011-11-24 13:41  会长   
这个好哇。用c++写太复杂也不会,用java写还需要人家装虚拟机,用C#写还要装framework。用python的话,谢谢是不是可以直接转为为windows下可执行的exe文件。
  
#4楼 [ 楼主2011-11-24 15:27  Rollen Holt   
@会长
对于pyQT包装为exe文件,貌似py2exe有点问题,好像还有个cx_Freeze。PyInstaller。具体操作可以参考 http://blog.csdn.net/vah101/article/details/6207030
  
#5楼   2011-11-24 18:10  会长   
我请教个python的问题:如何定义类里的字段,我知道这样肯定是行的:
?
1
2
3
4
class  Person:
     def  __init__( self , name, sex):
         self .name =  name
         self .sex =  sex

name和sex就是类里的字段了,相当于java这样写:
?
1
2
3
4
5
6
7
8
9
class  Person
{
   String name,sex
   Person(String name, String sex)
   {
     this .name = name;
     this .sex = sex
   }
}

可是我不想让__init__方法有参数(处于某种原因),我该如何写呢,这样吗?
?
1
2
3
4
class  Person:   
      name = ‘’
      sex = ‘’
#其他的方法

可是这样写我有个疑惑,比如如下代码:
?
1
2
3
4
5
class  Person:
     count = 0
     def __init__(self, name, sex):
         Person.count += 1
         print(self.count)

实例几遍count的值就自增几遍,而如果这样:
?
1
2
3
4
5
class  Person:
     count = 0
     def __init__(self, name, sex):
         self.count += 1
         print(self.count)

无论实例化几遍,永远输出‘1’。
我和郁闷,难道python里面决定一个变量是实例变量还是静态变量取决于用到这个变量的方法里是self.XXX还是className.XXX写法?太奇怪了,那如果有的方法是self. 有的方法是className. 岂不是很乱套。愿闻博主教诲,谢谢
  
#6楼   2011-11-24 18:15  会长   
我有试了下如下代码:
?
1
2
3
4
5
6
7
8
9
10
class  Person:
     count =  0
     def  __init__( self ):
         self .count + = 1
         Person.count + = 2
         print ( self .count)
         print (Person.count)
          
if  __name__ = =  '__main__' :
     p =  Person()

结果是
1
2

这是不是说count = 0这句表达式相当于java里的两句表达式:
?
1
2
int  count = 0;
static  int  count = 0; //当然,在java里应该通不过编译
  
#7楼 [ 楼主2011-11-24 21:48  Rollen Holt   
@会长
应该:
?
1
2
3
4
5
class  Person( object ):
    def  __init__():
         super (Person, self ).__init__()
         self .name = "yourName"
         self .sex = "your sex"

你没有搞清楚python里面的类的静态变量和类变量。搞清楚那个是静态变量哪个是类变量,这样,结合你的java知识,其实都是通的,呵呵。加油、
  
#8楼   2011-11-24 22:20  会长   
@Rollen Holt
谢谢回复,基础知识没怎么看,我就盼望着早一天结束活儿,就再也不碰python了。呵呵。其实不是python,是项目不怎么成功,“恨屋及乌”了。
  
#9楼   2011-11-24 22:20  会长   
你真好学呀。你毕业了工作还是读研
  
#10楼   2011-11-24 22:24  会长   
你除了学习专业知识还喜欢看什么书吗?给我推荐下,谢谢了
  
#11楼 [ 楼主2011-11-24 23:09  Rollen Holt   
@会长
大三的孩子你伤不起啊。呵呵。平时除了专业书的话,喜欢文学,鲁迅的,不过现在基本没时间了,呵呵。不过经常关注业界动态
  
#12楼   2012-11-07 13:00  prayer163   
请问您一个问题,
QWidget 什么时候用self.setGeometry? 什么时候用self.resize?
  
#13楼 [ 楼主2012-11-08 22:30  Rollen Holt   
@prayer163
摘录一下官网API文档的解释吧:
geometry : QRect
This property holds the geometry of the widget relative to its parent and excluding the window frame.
When changing the geometry, the widget, if visible, receives a move event (moveEvent()) and/or a resize event (resizeEvent()) immediately. If the widget is not currently visible, it is guaranteed to receive appropriate events before it is shown.
The size component is adjusted if it lies outside the range defined by minimumSize() and maximumSize().
Warning: Calling setGeometry() inside resizeEvent() or moveEvent() can lead to infinite recursion.
See the Window Geometry documentation for an overview of geometry issues with windows.
By default, this property contains a value that depends on the user's platform and screen geometry.
Access functions:
const QRect & geometry () const
void setGeometry ( int x, int y, int w, int h )
void setGeometry ( const QRect & )
See also frameGeometry(), rect(), move(), resize(), moveEvent(), resizeEvent(), minimumSize(), and maximumSize().

size : QSize
This property holds the size of the widget excluding any window frame.
If the widget is visible when it is being resized, it receives a resize event (resizeEvent()) immediately. If the widget is not currently visible, it is guaranteed to receive an event before it is shown.
The size is adjusted if it lies outside the range defined by minimumSize() and maximumSize().
By default, this property contains a value that depends on the user's platform and screen geometry.
Warning: Calling resize() or setGeometry() inside resizeEvent() can lead to infinite recursion.
Note: Setting the size to QSize(0, 0) will cause the widget to not appear on screen. This also applies to windows.
Access functions:
QSize size () const
void resize ( int w, int h )
void resize ( const QSize & )
See also pos, geometry, minimumSize, maximumSize, resizeEvent(), and adjustSize().
  
#14楼 [ 楼主2012-11-08 22:31  Rollen Holt   
@prayer163
另外可以参考一幅图:

话说我也好久没用Qt了,因为现在桌面程序已经不流行了,我基本是web了
  
#15楼   2012-11-21 17:08  十年灯   
楼主救命啊,我想把窗口标题设成中文的,怎么搞都是乱码啊

文件头部加
?
1
# -*- coding: utf-8 -*-

我把编码换了又换都是乱码...该怎么弄呢
  
#16楼   2012-11-21 17:37  十年灯   
抱歉,原来把字符串decode一下就行了。。。我太菜了

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值