1、选择菜单和旋转按钮

选择菜单 OptionMenu

sg.OptionMenu()
注意!
OptionMenu只有tkinter端口才有此元素,其他三个端口没有。
此元素和设置了只读属性的ComboBox很像。
OptionMenu没有font属性,也没有 enable_events 事件属性

OptionMenu(values,default_value=None,key=None,size=(None, None),disabled=False,auto_size_text=None,background_color=None,text_color=None,pad=None,tooltip=None,visible=True,)

Update方法,用于元素的更新。

window[key].update()

window[key].Update()

元素可以更新的属性只有如下几种:

Update(value=None,# 更新默认选中的元素values=None,# 更新所有显示的文本选项disabled=None,# 更新元素的禁用状态visible=None# 更新元素的可见状态)

Python range()函数

用于创建一个有序整数列表。

返回值是一个可迭代的对象。

一般用在 for 循环中,或者直接转化为列表

range(10) 0~9整数 步长默认为1
range(1,10) 1~9整数 步长默认为1
range(1,10,2) 1,3,5,7,9 步长为2

转换为列表

print(list(range(10)))
print(list(range(1,10)))
print(list(range(1,10,2)))

结果

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[1, 2, 3, 4, 5, 6, 7, 8, 9]
[1, 3, 5, 7, 9]

用于for循环的案例

for i in range(10):print(i)

结果

0
1
2
3
4
5
6
7
8
9
[Finished in 0.2s]
import PySimpleGUI as sgsg.theme('DarkTeal8')layout = [[sg.T("OptionMenu"), sg.OptionMenu(values=list(range(10)), size=(5, 20), key='-optionMenu-'),sg.T("Combo"), sg.Combo(values=list(range(10)), size=(15, 20), key='-Combo-')],[sg.Ok()]
]
window = sg.Window('Python GUI', layout, keep_on_top=True)while True:event, values = window.read()key = '-COMBO1-'print(event)if event == None:breakif event == 'Ok':window['-optionMenu-'].update(value='u')window['-Combo-'].update(value='u')window['-optionMenu-'].update(values=['u',2,3])   # 必须是列表window['-Combo-'].update(values=['u',2,3])        # 可以不是列表容器window['-Combo-'].update(values='u')        # 可以不是列表容器window.close()

1.2旋转按钮 Spin

特征: 含有向上向下两个箭头按钮

Spin(values,initial_value=None,key=None,disabled=False,enable_events=False,size=(None, None),auto_size_text=None,font=None,background_color=None,text_color=None,pad=None,tooltip=None,visible=True,)

Update方法,用于元素的更新。

window[key].update()

window[key].Update()

元素可以更新的属性只有如下几种:

Update(value=None,values=None,# 可以是个整数。disabled=None,visible=None)

2、单选框

一组里面只能选择一项

sg.Radio()orsg.R()

Radio(text,# str 文本用于显示在单选框旁边group_id,# any# 组IDkey=None,# 元素的唯一标识符default=False,# bool 如果为True,则默认选中disabled=False,# 设定禁用状态size=(None, None),# 设定元素宽度,行高auto_size_text=None,# bool 默认为True# 元素根据文本自动调整大小background_color=None,# 元素背景颜色text_color=None,# 元素文本颜色font=None,# 字体名称和大小设定# (str,int)pad=None,# 左右上下  (int,int)or((int,int),(int,int))# 元素间隔设定tooltip=None,# 悬浮文本设定enable_events=False,# 元素事件属性# 当设定为True时,选框被选中时会发生事件visible=True,# 设定元素的可见状态)
import PySimpleGUI as sglist_comment = ["非常满意","满意","一般","不满意"]
list_id = ["1.请对小A的服务进行评价","2.请对小B的服务进行评价"]
layout = [[sg.T(list_id[0])]]+\[[sg.R(i,group_id=1) for i in list_comment]]+\[[sg.T(list_id[0])]]+\[[sg.R(i,group_id=2) for i in list_comment]]
window = sg.Window('Python GUI', layout, keep_on_top=True)while True:event, values = window.read()key = '-COMBO1-'print(event)if event == None:break
window.close()

巧用For循环快速定义单选框(1)

  • 定义三行元素的常用方式1

layout=[[],[],[]]

  • 定义三行元素的常用方式2

layout=[[]]+[[]]+[[]]

  • 利用for循环从左向右遍历时 方式1和方式2 都可以

layout=[[],[],[()for循环]]
layout=[[]]+[[]]+[[()for循环]]

  • 利用for循环从上向下遍历时 要用方式2

layout=[[]]+[[]]+[[]for循环]

巧用key=(x,y),For循环快速定义单选框(2)

  • 从左向右从上向下同时遍历
layout=[[sg.R(x,group_id=y,key=(x,y)) for x in Comment]for y in range(9) ]
import PySimpleGUI as sglist_comment = ["非常满意","满意","一般","不满意"]
list_id = ["1.请对小A的服务进行评价","2.请对小B的服务进行评价"]
layout = [[sg.T(str(y+1)+".")]+[sg.R(text=x,group_id=y,key=str(x)) for x in list_comment] for y in range(0,9)]
window = sg.Window('Python GUI', layout, keep_on_top=True)while True:event, values = window.read()key = '-COMBO1-'print(event)if event == None:break

ResetGroup方法,相同组ID的单选框都更新为未选中状态。

window[key].ResetGroup()

window[key].reset_group()

Update方法,用于元素的更新。

window[key].update()

window[key].Update()

元素可以更新的属性只有如下几种:


Update(value=None,# bool 如果为True,此单选框被选中,同组的其他选框更新为未选中。text=None,# str 更新显示在按钮旁边的文本background_color=None,# 更新背景颜色text_color=None,# 更新文本颜色disabled=None,# bool 更新元素的禁用状态visible=None# bool 更新元素的可见状态)
import PySimpleGUI as sglist_comment = ["非常满意","满意","一般","不满意"]
list_id = ["1.请对小A的服务进行评价","2.请对小B的服务进行评价"]
layout = [[sg.T(str(y+1)+".")]+[sg.R(text=x,group_id=y,key=(x,y+1)) for x in list_comment] for y in range(0,9)]+[[sg.Ok()]]
window = sg.Window('Python GUI', layout, keep_on_top=True)while True:event, values = window.read()print(values)if event == None:breakif event=="Ok":# window[('不满意', 3)].reset_group()window[('不满意', 3)].update(value=True)window.close()

3、复选框 Checkbox

sg.Checkbox()or sg.CB()


Checkbox(text,# 文本显示在选框旁边default=False,# bool 如果为True,则选中size=(None, None),# 尺寸设定,元素的宽度和行高auto_size_text=None,# bool 默认为Truefont=None,# (str,int)字体的名称和大小设定background_color=None,# 背景颜色设定text_color=None,# 字体颜色设定enable_events=False,# bool 元素的事件属性disabled=False,# bool 元素的禁用状态key=None,# 元素的唯一标识符# 规范key='-CHECKBOX-'pad=None,# 和周围元素的间隔((int,int),(int,int)) 左右上下tooltip=None,# str 悬浮文本设定visible=True,# bool 元素的可见状态设定)
import PySimpleGUI as sglist_comment = ["老虎","狮子","猴子","猫","狗","鳄鱼"]
layout = [[sg.T("选择你喜欢的动物吧!!!")]]+\[[sg.CB(i)] for i in list_comment]+\[[sg.Ok()]]
window = sg.Window('Python GUI', layout, keep_on_top=True)while True:event, values = window.read()print(values)if event == None:breakwindow.close()

Update方法,用于元素的更新。

window[key].update()

window[key].Update()

元素可以更新的属性只有如下几种:


Update(value=None,# 更新选中状态# bool 如果为True,则选中,如果为False,则清空选中状态text=None,# str  更新选框旁边的文本background_color=None,# 更新元素的背景颜色text_color=None,# 更新元素的文本颜色disabled=None,# 更新元素的禁用状态visible=None# 更新元素的可见状态)
import PySimpleGUI as sglist_comment = ["老虎","狮子","猴子","猫","狗","鳄鱼"]
layout = [[sg.T("选择你喜欢的动物吧!!!")]]+\[[sg.CB(i)] for i in list_comment]+\[[sg.Ok()]]
window = sg.Window('Python GUI', layout, keep_on_top=True)while True:event, values = window.read()print(values)if event == None:breakif event == "Ok":# 复选框在不进行key值设定时,默认用数字作为key 从0开始for i in range(6):window[i].update(value= True,text = None,background_color='yellow',text_color='red',disabled=True,visible=None)window.close()

4、滑块 Slider

滑块,有水平方向的也垂直方向的。

sg.Slider()

Slider(range=(None, None),# 滑块范围(最小值,最大值) 默认1-10key=None,# 元素的唯一标识符 规范书写key='-SLIDER-'default_value=None,# 滑块初始所处位置resolution=None,# 滑块值变动的最小单位值tick_interval=None,# 刻度值标记orientation=None,# 方向设定 水平方向或者垂直方向# 有效值'horizontal' or 'vertical' # 支持简写:'h' or 'v'disable_number_display=False,# bool 默认为False,如果为True,滑块旁的数字不显示。border_width=None,# 边界线宽度relief=None,# 浮雕设计,与border配合使用才有效# 'raised','sunken','flat','ridge','solid','groove'enable_events=False,# 元素的事件属性disabled=False,# 元素禁用状态设定size=(None, None),# 元素的尺寸设定 宽度和行高font=None,# 字体名称和大小设定background_color=None,# 滑块背景颜色设定text_color=None,# 元素文本颜色设定pad=None,# 元素间隔设定((int,int),(int,int))tooltip=None,# 元素悬浮文本设定visible=True,# 元素可见状态设定)

sg.theme_slider_color('') 用于设定滑块轨迹的颜色

import PySimpleGUI as sgsg.theme_slider_color("yellow")
#要在字符串中插入变量的值,可在前引号前加上字母f,再将要插入的变量放在花括号内
layout = [[sg.Slider(key=f'-SLIDER{i}-',range=(1,500),default_value=100*(i+2),resolution=100,tick_interval=100,orientation='v',disable_number_display=True,border_width=5,relief='sunken',enable_events=True,disabled=False,size=(10,55),font=("黑体",5),background_color="blue",text_color='red',)for i in range(3)]
]
window = sg.Window('Python GUI', layout, keep_on_top=True)while True:event, values = window.read()print(values)if event == None:breakwindow.close()

Update方法,用于元素的更新。

window[key].update()

window[key].Update()

元素可以更新的属性只有如下几种:

Update(value=None,# int or floatrange=(None, None),# (int,int) or (float,float)disabled=None,# bool visible=None# bool)

5、图片显示 Image

sg.Image()

Image(filename=None,# 图片路径仅支持GIF和PNGdata=None,#base64编码的字符串background_color=None,#背景颜色设定size=(None, None),# 图片 宽度和高度设定(pix)pad=None,#和周围元素间的间隔 ((int,int),(int,int))# 左右上下顺序key=None,# 元素的唯一标识符tooltip=None,# 元素的悬浮文本right_click_menu=None,# 右击调出菜单  ['开始',['开始','中止','结束']]visible=True,# 元素可见状态 boolenable_events=False,# 元素事件属性,默认为False)

f-string 格式化字符串常量(formatted string literals)

Python3.6新引入的一种字符串格式化方法。
目的是使格式化字符串的操作更加简便。
大括号 {} 标明被替换的字段。

举例:


# str 和 int 之间不可以直接相加 age=18
age_diff=5print('我今年'+str(age)+'岁,他比我大'+str(age_diff)+'岁。')print(f'我今年{age}岁,他比我大{age_diff}岁。')>>
我今年18岁,他比我大5岁。
我今年18岁,他比我大5岁。----------------------------------------
age=(1,4)print(f'他比我大{age[0]}岁还是{age[1]}岁?')print(f'他比我大{age}岁?')>>
他比我大1岁还是4岁
他比我大(1, 4)岁
import PySimpleGUI as sgimage_path=r"C:\Users\Admin\Desktop\Images\图片"
layout=[[sg.Image(filename=image_path+f'{i}.png')for i in range(1,5)]]window = sg.Window('Python GUI', layout, keep_on_top=True)while True:event, values = window.read()print(values)if event == None:breakwindow.close()

UpdateAnimation动图更新方法

window[key].update_animation()
window[key].UpdateAnimation()

动图可以更新的属性只有如下几种:

window[key].UpdateAnimation(source,# 包含动画GIF的文件名或Base64编码的字符串time_between_frames=0# 显示帧之间要等待的毫秒数)
import PySimpleGUI as sgbase64_default = sg.DEFAULT_BASE64_LOADING_GIF
layout=[[sg.Image(data=base64_default,key='-gif-')]]
key='-gif-'
window = sg.Window('Python GUI', layout, keep_on_top=True)while True:event, values = window.read(timeout=10)  # 每隔10毫秒重新读一次界面print(values)window[key].update_animation(source=base64_default,time_between_frames=100)  # 帧于帧之间等到的毫秒数if event == None:breakwindow.close()

Update方法,用于元素的更新。

window[key].update()

window[key].Update()

元素可以更新的属性只有如下几种:

Update(filename=None,# 更新图片路径data=None,# 更新元素base64编码字符串size=(None, None),# 更新元素的大小visible=None# 更新元素的可见状态)
import PySimpleGUI as sg
ͼƬ1 = b'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'
ͼƬ2 = b'iVBORw0KGgoAAAANSUhEUgAAAD0AAAA9CAYAAAAeYmHpAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAAFxEAABcRAcom8z8AAAWJSURBVGhD5ZppbxNXFIaPPWMndohCsxLI0jgUyla1FVRdUD+0XyvxV/oz+ncq9WupVEUtNECjkA0oLUtLUhLAJqtn8XDuMuPr8WE8xrMY8qBX47n3zvWcvOfcuZmQqfzwvQOHjKw8Hio8p3u//o43vMsc/PoTPx5Kp+tBO2j4uy5J1zntmIb8FB9d5bRjVMFcnif7IpFEcZo1pifHxIBXboBjmWR/NBJ4QVM/mKRUMwwwluahtl2O9V5cUneaOWytosO7L/GcNdHjopFAqenk5aDD5spNdLgCZZs1IplM07jIJEnNaV7DqzfB2anAM8uB69s1bHehr+lcglScZo8lc/WWF/AvFRuqycWcvNOOxWq4MeB9NWAOfW2QnP1tMJeuQ21rnewXEiTqNHPYWv0Tam7AZQzYVsa4KNeEkf30CRiL1/jqb68/IsdwSRSn44U9f601X8BNDreP9WANrPtL+NyrgTZyHHJnL8qe15NIejsW1vDaLS/gq2UL9mrY7vtXp3kOv3g6L/8B9gY6i+jvnwZ99hxGhKs/MV5IEHt6O6ZwmNewiQG/sBpT2pWKv88ne3MdjNtYv5jOmcIRdPcSaGNT5NgGSWJ1mjls3ZEpzQJGh8OlND0fk/VQSefhccif/wyy/QPk2GYJYnOaO3xnwRcwMbBBykefnL1dvje3Nx5jA6bzNKZzCdM5gyEQ40lJYnGaO3zX7zDrC0PzfPYWrs7Lbjr38cVKG5sgxwZL4L0u6rn0LW9QMZau4YKxK8/ax6vhEAEP6Bm4MpyDTG8R8he+kK0CY2GO7+C0oXFcsD5EqxSv2qA6/zM/tnD6zREBmxgwK2Jqbkouje18ZZ46hel8Bu84aHVuJYHndP7iN7xBxcSUYk7/uGVABR81cSKcznOnc+c/l63RYty4yo+xOd0Z1L1EIUE9aGoME4Nqj0MuVF8UkoRYvRlUexxyofqikEBxGhv9SgvqXqKQRHE6AGqCOJQQb4XTtfIWsK1nGDkHe03Xe5KEczplapVnbakV3ec0+1rffeiTH4A+czaUtJETTdd7koSsaSbfBJFLfNXryA4MhVIYlKDZt/qVBtR9RCWBkt6E0oK6lygkeSsWsqgJmd5UXxxyofqikCBUek8XNDhZ1NtSqaDTcwbJheqLQpL6S4SPvuQNKsbdBfGwf0Pmnlfh7z1LngUzoGfhyrECZHoKkD/9iWwVWBsPwdnbAX1iFjL5XtnaPtXF3/gxsKazxSOgDY62LfZKh3F5sAdK6Hqn1Mq46dipgHFvke/OOqXutO8VTadY/z8G++m//PPc84OWjguni8LpUx/LVoltg/nffW+3xV7q68em+ed2qN7+nR9jW731sUnQRtnLO+Z4b+saD0LTIMdeF8lA7c0nYP6zAo5xwM/bpcXq3Zn0sQkMHLeFyOUhDDx0qtPzaSPjkJs5w+uap/tfmO4Vlu70+GYJglfvCKSPouNsP4yEDpyYx1W2bwDysxfElpOl/aN7YAX90U6VJFanXXHHmwKnxrpQfYq0LOQmT2K6T+E5xr6F6f6Apft+fQwpQWw17ccf+GwxB+xlrqp2YX/Wqaf7SzDw9+nOf7WMWDrWN1t5GV+5jqtjOMp5CGWL/ZAvncN0H+Tpbr/YJMdxSWKvab/0EXR82A28AKW+HP/cAHFdoLK4up/AdD9eAn18hh7DJEmkpv3ijgcGTl/XStrRIcjk2Fx0v0tiNe3HH/hEb9jHWeckWtN+6VjfbDFifPqe3FNjFzU2EklSc9pFxxXdDZxTY/9NIV68oDP4I05LObaXdgPHRYkaE4VclPROVzrWtz4kAyf6I5FESW9qVLLScW+t9R8l+6KRIPWa9sMWt7jpmvRORJKuSu/4Jei69E4C73XRYeIQOg3wCi3nThIQnB/oAAAAAElFTkSuQmCC'
ͼƬ3 = b'iVBORw0KGgoAAAANSUhEUgAAAD4AAAA+CAYAAABzwahEAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAAFxEAABcRAcom8z8AAALtSURBVGhD7Ztdc9JAFIZPKEUoIMiHtUxHbXvV8ePSO/9Rf07/kXde63QcdRgpU5QWKAkQIAH0bFcmxhp2ye5mMTwzZ9gNk8w85J2wOQTj7fnZAmLGu7NzI0HHsWN5xg/enJIN/zOt9xfkNdZnfCuuE+54Skfy0E580OrQkVy0Ekdp67JNZ3LRRlylNKKFuGppJHLxP6QX6haRkYp7pR3TVukdnbhf2jFHZKyKSMRlSQ+/d2F0fUtnwSgXlyG9mM/h9usVmI0f0K+36NZglIoPJUhPrRHcfKiD3emT+cOn++R1FcrEUdoULI3R7lx8I0vcZOYBlE+fQfZJib4bjBJx0dLeaCOZSgEqL55DKr9H5ixIFxctfV+0i8c1MBJ8KlLFRUuHibYfaeIipUVE209g6wm/Glx7QmfszBwXZhOHjHmkM7XSr8gaUH19Asl0im4F6H1uwrhnkTFGe92zzNV6mg5s7lpHOggUDRttP0xRd0cTmHQs7hIhjWCkq6+OQ0XbD5P4wpnBzJ5yl85IvarrzFY8bmzFdWdw1WEqZzSmewSzEeK4Lreabba6vKZ7BbMR4plyAfaqReZiYWOiXjg6YKp0KU/3CGZ7cYsbW/G4wSRu7BiQ2N3hLp1hEk/mMpDeL3JXMpumRwgHNkOwGfH7Pl8EK8UTu8m1Ckk9ygqRNxtt0oG5+ViHcfeuExMWaU89YX8Mm4PItDcEd7h6Kfmv1hM2F7ENhh1WJFcrQ/7wMRnzoOSpJ29vLOyZxw/B23bCNXn3UyNU9KVe1UXKI6SHfnLXQ5/0h6GiL1UcES2P6/bKyyPSf5u7M+h9aS5/j+NBujgiWv6v6Lf4o69EHBEtj4SJvjJxRIb8fdFnQak4IkPeG/38YZVuDUa5OCJDHsHj5moVOgsmEnFEljwrkYkjfnkwyFAJkYojXnnDUGceuTjilVeFFuKIanltxBGV8lqJIyivAu3EEe+9uCy0FFdBbMWXrac4Ees/3MUUgJ8kgTzozg6iyQAAAABJRU5ErkJggg=='
ͼƬ4 = b'iVBORw0KGgoAAAANSUhEUgAAAD4AAAA+CAYAAABzwahEAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAAFxEAABcRAcom8z8AAAL5SURBVGhD7ZvdThNBFMfPbltrK6VAoUURRYwx3miM3nrnO/gUPo1P4Tt45wNgjJGoCfWjiiyUtvS7u23dM53I0sh2pjszO3X3R052Zkmb/Jh/htlDMZ6/fD2GiPHm1QvDpOPI8XfFbz54Rm78z1T235JrpFc8FtcJZ9ClI3loJ96sVuhILlqJo3TDKtOZXLQRVymNaCGuWhoJXfyC9FjdITJUca+03anD2P1SRWji09IDt1QSirgs6dbpT2jXf9OZP8rFZUiPR0M4/fUJ6kcHUDv8Qu/6o1RchnS/04Cj8h50GhaZr5R2yXUWysRlSGO0j7+9J0fcVDoLG7cfwdLaFv2uP0rERUt7o41k80Uo7jyGdHaZzFmQLi5aehLtdxeivXbjPhgmn4pUcdHS59Hu0Gg/ZI72NNLERUpfHu08mc+Db+updvgZ7D7/s/HQGcDQ7pExj3S2cAsMw4TNu08heSVD7wJUKx+h26ySMUZ73lXmaj0NumfcNY+0HygaNNrTMEXd6begd2ZxlwhpBCNd2n0SKNrTMImPHBuG7obCWzojdVfXmVg8asTiutOs/mAqu9emr/BnIcTxXN6wvrLV8eS0OIuFEMcj6rWVTeZiYWGivnr9HlNlcuv0Ff7Em1vUiMWjBpO4YSbATKS4S2eYxFOZZcisbnFX8mqOvkMw7H6HNCMc+pwvgpniZtJdvTkKSS8VhMg3rAPSgbHKe+71hN4NhrRPPWF/DJuDSL9VBafXJGM/Lms9Yd8c/0KCHVYkV9iGfHGHjHlQ8qknb28s6MrjD8HbdsIz+cn3D4GiL3VXFymPnPfQE9Br1wJFX6o4Iloez+2lO5PW8mjouJvePnk44UW6OCJaXkT0lYgjouWRINFXJo7IkP9X9FlQKo7IkPdGP7/B9mtOuTgiQx7B982tb9OZP6GII7LkWQlNHJmWdw+SZKyCUMURr7xhREgc8cqrQgtxRLW8NuKISnmtxBGUV4F24oj3WVwWWoqrILLi8b9YxkQCgD/BqDzP2hgYEAAAAABJRU5ErkJggg=='
ͼƬ5 = b'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'
data_list=[ͼƬ1,ͼƬ2,ͼƬ3,ͼƬ4,ͼƬ5,]
layout=[[sg.Image(data=ͼƬ5,background_color="red",# size=(10,20),# pad="",key='-Image-',tooltip="这是一张图片",enable_events=True,right_click_menu=[1,['-图片切换-', '退出界面']])]]
key='-gif-'
window = sg.Window('Python GUI', layout, keep_on_top=True)
i=0
while True:event, values = window.read()  # 每隔10毫秒重新读一次界面print(values)if event == None:breakif event == '-Image-':window['-Image-'].update(data=data_list[i])i=i+1 if i<4 else 0if event == '-图片切换-':window['-Image-'].update(data=data_list[i])i=i+1 if i<4 else 0print(event)if event == "退出界面":print("Exit")breakwindow.close()

pythonGUI(二)基本元素之二相关推荐

  1. 2021年大数据Hadoop(二十二):MapReduce的自定义分组

    全网最详细的Hadoop文章系列,强烈建议收藏加关注! 后面更新文章都会列出历史文章目录,帮助大家回顾知识重点. 目录 本系列历史文章 前言 MapReduce的自定义分组 需求 分析 实现 第一步: ...

  2. 一位中科院自动化所博士毕业论文的致谢:二十二载风雨求学路,他把自己活成了光.........

    4月18日,中国科学院官方微博发布消息,披露了这篇论文为<人机交互式机器翻译方法研究与实现>,作者是2017年毕业于中国科学院大学的工学博士黄国平. 这篇论文中情感真挚的<致谢> ...

  3. iOS 11开发教程(二十二)iOS11应用视图实现按钮的响应(2)

    iOS 11开发教程(二十二)iOS11应用视图实现按钮的响应(2) 此时,当用户轻拍按钮后,一个叫tapButton()的方法就会被触发. 注意:以上这一种方式是动作声明和关联一起进行的,还有一种先 ...

  4. 实验二十二 SCVMM中的SQL Server配置文件

    实验二十二 SCVMM中的SQL Server配置文件 在VMM 2012中管理员可以使用 SQL Server 配置文件,在部署完成虚拟机之后,实现 SQL Server 数据库服务自动化部署并交付 ...

  5. 插入DLL和挂接API——Windows核心编程学习手札之二十二

    插入DLL和挂接API --Windows核心编程学习手札之二十二 如下情况,可能要打破进程的界限,访问另一个进程的地址空间: 1)为另一个进程创建的窗口建立子类时: 2)需要调试帮助时,如需要确定另 ...

  6. OpenCV学习笔记(二十一)——绘图函数core OpenCV学习笔记(二十二)——粒子滤波跟踪方法 OpenCV学习笔记(二十三)——OpenCV的GUI之凤凰涅槃Qt OpenCV学习笔记(二十

    OpenCV学习笔记(二十一)--绘图函数core 在图像中,我们经常想要在图像中做一些标识记号,这就需要绘图函数.OpenCV虽然没有太优秀的GUI,但在绘图方面还是做得很完整的.这里就介绍一下相关 ...

  7. 读书二十二载,信念很简单,把书念下去,然后走出去,不枉活一世。

    ‍ ‍ 关注+星标公众号,不错过精彩内容 昨天看了一篇关于博士论文的致谢,看的我想哭.改变命运有很多条路,但是对于大多数人而言,读书是改变命运的捷径. 内容是讲述了自己20多年的求学经历:小时候煤油灯 ...

  8. (原创)无废话C#设计模式之二十二:总结(针对GOF23)

    无废话C#设计模式之二十二:总结(针对GOF23) 比较 设计模式 常用程度 适用层次 引入时机 结构复杂度 Abstract Factory 比较常用 应用级 设计时 比较复杂 Builder 一般 ...

  9. Android项目实战(二十二):启动另一个APP or 重启本APP

    Android项目实战(二十二):启动另一个APP or 重启本APP 原文:Android项目实战(二十二):启动另一个APP or 重启本APP 一.启动另一个APP 目前公司项目需求,一个主AP ...

  10. FreeSql (二十二)Dto 映射查询

    适合喜欢使用 dto 的朋友,很多时候 entity 与 dto 属性名相同,属性数据又不完全一致. 有的人先查回所有字段数据,再使用 AutoMapper 映射. 我们的功能是先映射,再只查询映射好 ...

最新文章

  1. 知乎热问:国家何时整治程序员的高薪现象?
  2. c++内存管理的一些资料
  3. SqlDependency学习笔记
  4. 波士顿动力警犬遭禁用!反对呼声太高,纽约警局认怂
  5. Java synchronized 与 lock (Reetrantlock)锁性能比较
  6. PHP发起POST DELETE GET POST 请求
  7. 12 Django cooking与session
  8. jxls使用excel公司_使用jXLS将Excel文件解析为JavaBeans
  9. java使用Socket类接收和发送数据
  10. C++学习 ---- 系列文章
  11. 2012年蓝桥杯【初赛试题】 转方阵
  12. SQL游标原理和使用方法(转)
  13. pip更新后怎么还是旧版本_双城SEO优化_百度算法更新后,企业网站外链该怎么发?...
  14. thymeleaf的能用在什么地方_上古文明真相研究系列:天圆地方和南辕北辙
  15. OC学习篇之---类的初始化方法和点语法的使用
  16. 《MapReduce 2.0源码分析与编程实战》一1.5 看,大象也会跳舞
  17. 第一部分 第二章 答案合集(part 1)1006-1023
  18. ios python 越狱_如何使用Frida绕过iOS应用程序中的越狱检测!!!
  19. Teardrop攻击--伪造虚假的IP数据包发送并抓取及完成简易静态网页
  20. mac os php Phalcon拓展

热门文章

  1. 解决谷歌浏览器切后台会停止游戏
  2. HYSBZ 2565 最长双回文串
  3. Google 释出开源软件漏洞扫描工具 OSV-Scanner​
  4. Java中将科学记数法字符串转换成数字字符串
  5. 计算机网络重装死锁,网络中的路由和死锁.ppt
  6. 问题:腾讯会议使用麦克风时没有声音(已解决)
  7. 02论文分享与分析——基于ROS的移动机械臂底层规划及运动仿真
  8. mac-mini系统安装
  9. 常用计算机视觉应用与简介,浅谈计算机视觉的应用与发展
  10. 科技初创企业遭遇IPO寒冬